私は自分のスキルのテストを書こうとしています。
Behaveフレームワークを使用しています。
mycroftのドキュメントでは、Behaveを使用してテストを作成する方法が説明されている場合、mycroftの応答に特定の単語が含まれているかどうかを確認する可能性が示されています。
しかし、提示されたすべての方法が私にはうまくいきません。
私は試した:
間違いはどこにありますか?
キーワード「contain」または「include」を使用する必要がありますか?
問題は最も単純だと思います。
「含むべき」の定義に注意する場合は、他のステップのように属性{skill}を使用しないでください。したがって、このステップを使用するには、「Then {skillname} ...」ではなく「Thenmycroft ...」と記述する必要があります。
この2つの定義を比較してください...
@then( 'mycroftの返信には "{text}"が含まれている必要があります')
他のステップとは異なります
@then( '"{skill}"は正確に "{text}"'で応答する必要があります)
ねえ、私はドキュメントでその例を変更しました。 それは私の側の間違いでした。
より広範な「マイクロフト応答」ステップは、適切な回答が得られる限り、どのスキルが応答するかを実際に気にしない場合に役立ちます。 たとえば、エッフェル塔の高さなどの一般的な知識の質問をする-答えはDuckDuckGo、Wikipedia、またはWolfram Alphaかもしれませんが、どちらにしても、それでも成功した相互作用です。
問題を提起していただきありがとうございます。これらはすべて、新しいステップとして追加するのに適した候補だと思います。
OK。 本当にありがとう。 これで、then_containsステップの使用方法が明確になりました。
この例にも問題があります。
`機能:現在の天気
シナリオ:パリの気温
Given an english speaking user
And user is located in Paris
When the user says "how hot will it be today"
Then "mycroft-weather" should reply with dialog from "current.high.temperature.dialog"
But mycroft reply should contain "Paris"`
But or Andを使用すると、返信に含まれている必要のある単語のチェックが前の返信で行われているようには見えませんが、通常どおりに機能しているようです。
Then mycroft reply should contain...
なので、これも使用しているようですが|そして、新しい返信に出席して、返信に特定の単語が含まれているかどうかを確認します。
また、behaveステップの定義には、AndまたはButキーワードを使用した前の応答で機能するcontainステップに関する参照はありません。
編集:
この動作は、動作の通常の動作です。
But
とAnd
は前の返信では機能しませんが、テストを読みやすくするのに役立ちます。
あなたが書くなら
"Then "myskil" should reply with dialog "myskill.dialog"
"And|But "myskill" should reply with dialog "myskillother.dialog"
と同じです
"Then "myskil" should reply with dialog "myskill.dialog"
"Then "myskill" should reply with dialog "myskillother.dialog"
したがって、前のステップのタイプに応じて、 and|but
はthen|given
置き換えられます。前のステップがthen
ステップはthen
置き換えられます。 given
。
したがって、then_containが同じ場合、チェックは前の発話ではなく、新しい発話に対して行われます。
これは、mycroftメッセージバスが指定された応答を保存しないためです。したがって、応答が消費されると、それにアクセスできなくなります。
プルリクエスト#2711および問題#2714を参照してください
最も参考になるコメント
ねえ、私はドキュメントでその例を変更しました。 それは私の側の間違いでした。
より広範な「マイクロフト応答」ステップは、適切な回答が得られる限り、どのスキルが応答するかを実際に気にしない場合に役立ちます。 たとえば、エッフェル塔の高さなどの一般的な知識の質問をする-答えはDuckDuckGo、Wikipedia、またはWolfram Alphaかもしれませんが、どちらにしても、それでも成功した相互作用です。
問題を提起していただきありがとうございます。これらはすべて、新しいステップとして追加するのに適した候補だと思います。