Mycroft-core: テストの問題の動作:「次に、返信に含める必要があります|含める」が機能しない

作成日 2020年09月30日  ·  5コメント  ·  ソース: MycroftAI/mycroft-core

私は自分のスキルのテストを書こうとしています。
Behaveフレームワークを使用しています。
mycroftのドキュメントでは、Behaveを使用してテストを作成する方法が説明されている場合、mycroftの応答に特定の単語が含まれているかどうかを確認する可能性が示されています。
しかし、提示されたすべての方法が私にはうまくいきません。

私は試した:

  • 次に、「mycroft-skill」の返信に[word]を含める必要があります
  • 次に、「mycroft-skill」はダイアログ[ダイアログファイル]で応答する必要がありますが、応答には[単語]を含める必要があります
  • 次に、「mycroft-skill」はダイアログ[ダイアログファイル]で返信する必要があります。次に、「mycroft-skill」の返信には[word]を含める必要があります。
  • 次に、「mycroft-skill」はダイアログ[ダイアログファイル]で応答する必要がありますが、「mycroft-skill」の応答には[word]を含める必要があります
  • 次に、「mycroft-skill」はダイアログ[ダイアログファイル]で応答する必要がありますが、応答には[単語]が含まれている必要があります
  • 次に、「mycroft-skill」はダイアログ[ダイアログファイル]で応答する必要があります。次に、「mycroft-skill」の応答には[単語]が含まれている必要があります。
  • 次に、「mycroft-skill」はダイアログ[ダイアログファイル]で応答する必要がありますが、「mycroft-skill」の応答には[単語]が含まれている必要があります

間違いはどこにありますか?
キーワード「contain」または「include」を使用する必要がありますか?

For discussion Enhancement - proposed help wanted

最も参考になるコメント

ねえ、私はドキュメントでその例を変更しました。 それは私の側の間違いでした。

より広範な「マイクロフト応答」ステップは、適切な回答が得られる限り、どのスキルが応答するかを実際に気にしない場合に役立ちます。 たとえば、エッフェル塔の高さなどの一般的な知識の質問をする-答えはDuckDuckGo、Wikipedia、またはWolfram Alphaかもしれませんが、どちらにしても、それでも成功した相互作用です。

問題を提起していただきありがとうございます。これらはすべて、新しいステップとして追加するのに適した候補だと思います。

  • その場合、{スキル}の返信には「{テキスト}」が含まれている必要があります
  • その場合、{skill}の返信に「{text}」を含めることはできません
  • その場合、mycroftの返信には「{text}」を含めるべきではありません

全てのコメント5件

こんにちは、単語を含めるための構文は次のようになります

Then mycroft reply should contain "SOMETHING CLEVER"

SOMETHING CLEVERは、mycroftから期待される巧妙な応答です:)

定義についてはここを参照してください。はwikiスキルにあります。

「含めるべきではない」ステップは見たことがありません。ドキュメントで参照されていますが、これは主に例だと思います...

問題は最も単純だと思います。
「含むべき」の定義に注意する場合は、他のステップのように属性{skill}を使用しないでください。したがって、このステップを使用するには、「Then {skillname} ...」ではなく「Thenmycroft ...」と記述する必要があります。

この2つの定義を比較してください...
@then( 'mycroftの返信には "{text}"が含まれている必要があります')
他のステップとは異なります
@then( '"{skill}"は正確に "{text}"'で応答する必要があります)

ねえ、私はドキュメントでその例を変更しました。 それは私の側の間違いでした。

より広範な「マイクロフト応答」ステップは、適切な回答が得られる限り、どのスキルが応答するかを実際に気にしない場合に役立ちます。 たとえば、エッフェル塔の高さなどの一般的な知識の質問をする-答えはDuckDuckGo、Wikipedia、またはWolfram Alphaかもしれませんが、どちらにしても、それでも成功した相互作用です。

問題を提起していただきありがとうございます。これらはすべて、新しいステップとして追加するのに適した候補だと思います。

  • その場合、{スキル}の返信には「{テキスト}」が含まれている必要があります
  • その場合、{skill}の返信に「{text}」を含めることはできません
  • その場合、mycroftの返信には「{text}」を含めるべきではありません

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ステップに関する参照はありません。

編集:

この動作は、動作の通常の動作です。
ButAndは前の返信では機能しませんが、テストを読みやすくするのに役立ちます。
あなたが書くなら

"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|butthen|given置き換えられます。前のステップがthenステップはthen置き換えられます。 given

したがって、then_containが同じ場合、チェックは前の発話ではなく、新しい発話に対して行われます。
これは、mycroftメッセージバスが指定された応答を保存しないためです。したがって、応答が消費されると、それにアクセスできなくなります。

プルリクエスト#2711および問題#2714を参照してください

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

forslund picture forslund  ·  6コメント

beemorris picture beemorris  ·  6コメント

ChanceNCounter picture ChanceNCounter  ·  8コメント

tiagochiavericosta picture tiagochiavericosta  ·  6コメント

ryanleesipes picture ryanleesipes  ·  4コメント