テストファイルは、project test
およびbot test
コマンドのテスト内容を記述するファイルです。
また、テストファイルに複数のテストを記述すると、コマンド実行時にまとめてテストを実行できます。
テスト内容には、ボットのテストに必要な以下の情報を記述できます。
- リクエスト内容
- レスポンスのテスト内容
ファイル仕様
ファイル名
(任意).yml
ファイル構成
キー |
型 | 必須 | 説明 | |
---|---|---|---|---|
config |
hash |
◯ | テスト設定を保持します。 | |
keep_app_id |
boolean |
◯ | テストファイル中の全てのタスクで同一のapp_id を使用する場合にtrue を指定します。テスト毎に異なる app_id を使用する場合はfalse を指定します。デフォルト値: false |
|
tasks |
hash 配列 |
◯ | タスクを配列で保持します。 詳細は「タスク」を参照してください。 |
タスク
キー |
型 | 必須 | 説明 | |||
---|---|---|---|---|---|---|
name |
string |
◯ | テスト実行時、結果に表示する名称を指定します。 | |||
request |
hash |
◯ | シナリオ対話APIのリクエストパラメータを指定します。 ※シナリオ対話APIでは JSON 形式ですが、ここではYAML 形式で記述してください。 |
|||
tests |
hash 配列 |
◯ | テストの内容を配列で保持します。 | |||
method |
string |
◯ | param とexpected の照合方法を指定します。利用できる値は「テストメソッド一覧」をご参照ください。 |
|||
param |
string |
◯ | シナリオ対話APIのレスポンスの中で、テストする値のパスを以下の形式で指定します。
※ |
|||
expected |
string またはstring 配列 |
◯ | param と比較する文字列、もしくは文字列の配列を指定します。 |
テストメソッド一覧
テストメソッド名 | 動作 |
equal |
param で指定した文字列がexpected と一致するかテストします。 |
not_equal |
param で指定した文字列がexpected と一致しないことをテストします。 |
in |
param で指定した文字列がexpected の少なくとも一つと一致しているかをテストします。 |
not_in |
param で指定した文字列がexpected の全てと一致しないことをテストします。 |
regex_equal |
param で指定した正規表現がexpected にマッチするかテストします。 |
regex_not_equal |
param で指定した正規表現がexpected とマッチしないことをテストします。 |
regex_in |
param で指定した正規表現がexpected の少なくとも一つとマッチするかテストします。 |
regex_not_in |
param で指定した正規表現がexpected の全てとマッチしないことをテストします。 |
ファイル記述例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
config: keep_app_id: true tasks: - name: 挨拶テスト request: voiceText: こんにちは tests: - method: equal param: response.systemText.expression expected: こんにちは。元気ですね! - name: NoMatchテスト request: voiceText: こんちは clientData: option: t: ols tests: - method: equal param: response.systemText.expression expected: "NOMATCH" |
複雑なテストの例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
config: keep_app_id: true tasks: - name: 「こんにちは」に対する名前・年齢質問テスト request: voiceText: こんにちは initTopicId: conv tests: - method: not_equal param: response.systemText.expression expected: おはよう! - method: in param: response.systemText.expression expected: - こんにちは!あなたの名前は何ですか? - こんにちは!あなたの年齢はいくつですか? - method: not_in param: response.systemText.expression expected: - おはよう! - こんにちは! - method: regex_equal param: response.systemText.expression expected: ^こんにちは!.+$ - method: regex_equal param: response.systemText.expression expected: あなたの - method: regex_not_equal param: response.systemText.expression expected: ^こんにちは!対話システムへようこそ!$ - method: regex_in param: response.systemText.expression expected: - ^.+あなたの名前は何ですか?$ - ^.+あなたの年齢はいくつですか? - method: regex_not_in param: response.systemText.expression expected: - ^あなたの$ |