Mycroft-core: Masalah Uji Perilaku: "Maka balasan harus berisi | sertakan" tidak berfungsi

Dibuat pada 30 Sep 2020  ·  5Komentar  ·  Sumber: MycroftAI/mycroft-core

Saya mencoba menulis tes untuk keterampilan saya.
Saya menggunakan kerangka kerja Perilaku.
Dalam dokumentasi mycroft ketika dijelaskan bagaimana menulis tes dengan Berperilaku ditampilkan kemungkinan untuk memeriksa apakah balasan mycroft mengandung kata tertentu atau tidak.
Tetapi semua cara yang disajikan tidak berhasil untuk saya.

Saya mencoba:

  • Kemudian balasan "mycroft-skill" harus berisi [word]
  • Kemudian "mycroft-skill" harus membalas dengan dialog [file dialog] Tetapi balasan harus menyertakan [word]
  • Kemudian "mycroft-skill" harus membalas dengan dialog [file dialog] Kemudian "mycroft-skill" balasan harus menyertakan [word]
  • Kemudian "mycroft-skill" harus membalas dengan dialog [file dialog] Tapi balasan "mycroft-skill" harus menyertakan [word]
  • Kemudian "mycroft-skill" harus membalas dengan dialog [file dialog] Tapi balasan harus berisi [word]
  • Kemudian "mycroft-skill" harus membalas dengan dialog [file dialog] Kemudian "mycroft-skill" balasan harus berisi [kata]
  • Kemudian "mycroft-skill" harus membalas dengan dialog [file dialog] Tapi balasan "mycroft-skill" harus berisi [kata]

Dimana letak kesalahannya?
Saya harus menggunakan kata kunci "berisi" atau "termasuk"?

For discussion Enhancement - proposed help wanted

Komentar yang paling membantu

Hei, saya telah mengubah contoh itu di dokumen. Itu adalah kesalahan di pihak saya.

Langkah "mycroft reply" yang lebih luas berguna ketika Anda tidak benar-benar peduli Skill mana yang merespons selama Anda mendapatkan jawaban yang bagus. Misalnya mengajukan pertanyaan pengetahuan umum seperti ketinggian menara Eiffel - mungkin DuckDuckGo, Wikipedia, atau Wolfram Alpha yang menjawab, tapi bagaimanapun itu masih merupakan interaksi yang sukses.

Terima kasih telah mengangkat masalah ini, saya pikir ini semua adalah kandidat yang baik untuk ditambahkan sebagai Langkah baru:

  • maka balasan {skill} harus berisi "{text}"
  • maka balasan {skill} tidak boleh mengandung "{text}"
  • maka balasan mycroft tidak boleh mengandung "{text}"

Semua 5 komentar

Hai sepertinya sintaks untuk memuat kata seharusnya

Then mycroft reply should contain "SOMETHING CLEVER"

Di mana SESUATU PINTAR adalah respons pintar yang diharapkan dari mycroft :)

Lihat di sini untuk definisi dan contoh dapat ditemukan di keterampilan wiki.

Saya belum melihat langkah "tidak boleh menyertakan", saya melihatnya direferensikan dalam dokumen tetapi saya pikir itu terutama sebuah contoh ...

Saya pikir masalahnya paling sederhana.
Jika diperhatikan definisi "harus berisi" jangan gunakan atribut {skill} seperti langkah lainnya, maka untuk menggunakan langkah ini kita harus menulis "Lalu mycroft... " dan bukan "Lalu {skillname}..."

Bandingkan dua definisi ini...
@then('mycroft reply harus berisi "{text}"')
dan tidak seperti langkah lainnya
@then('"{skill}" harus membalas dengan tepat "{text}"')

Hei, saya telah mengubah contoh itu di dokumen. Itu adalah kesalahan di pihak saya.

Langkah "mycroft reply" yang lebih luas berguna ketika Anda tidak benar-benar peduli Skill mana yang merespons selama Anda mendapatkan jawaban yang bagus. Misalnya mengajukan pertanyaan pengetahuan umum seperti ketinggian menara Eiffel - mungkin DuckDuckGo, Wikipedia, atau Wolfram Alpha yang menjawab, tapi bagaimanapun itu masih merupakan interaksi yang sukses.

Terima kasih telah mengangkat masalah ini, saya pikir ini semua adalah kandidat yang baik untuk ditambahkan sebagai Langkah baru:

  • maka balasan {skill} harus berisi "{text}"
  • maka balasan {skill} tidak boleh mengandung "{text}"
  • maka balasan mycroft tidak boleh mengandung "{text}"

Baik. Terima kasih banyak. Sekarang sudah jelas bagaimana menggunakan langkah then_contains.
Saya juga punya masalah dengan contoh ini:

`Fitur: cuaca saat ini
Skenario: Suhu di paris

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"`

Ketika saya menggunakan Tapi atau Dan sepertinya pemeriksaan kata yang harus berisi balasan dilakukan pada balasan sebelumnya, tetapi tampaknya berfungsi seperti biasa
Then mycroft reply should contain... , jadi sepertinya itu juga menggunakan Tapi|Dan, perhatikan balasan baru untuk memeriksa apakah balasan berisi kata tertentu.
Juga dalam definisi langkah berperilaku tidak ada referensi tentang langkah berisi yang bekerja pada balasan sebelumnya dengan kata kunci And atau But.

Sunting:

Perilaku ini merupakan perilaku normal dari berperilaku.
But dan And tidak berfungsi pada balasan sebelumnya, tetapi keduanya berguna untuk membuat tes lebih mudah dibaca.
Jika Anda menulis

"Then "myskil" should reply with dialog "myskill.dialog"
"And|But "myskill" should reply with dialog "myskillother.dialog"

Apakah sama dari

"Then "myskil" should reply with dialog "myskill.dialog"
"Then "myskill" should reply with dialog "myskillother.dialog"

Jadi and|but diganti dengan then|given tergantung pada jenis langkah sebelumnya, jika langkah sebelumnya adalah then langkah akan diganti dengan then sebaliknya dengan given .

Jadi dalam kasus then_contain sama, pemeriksaan dilakukan pada ujaran lisan baru bukan pada ucapan sebelumnya.
Ini juga karena bus pesan mycroft tidak menyimpan respons yang diberikan, sehingga ketika respons selesai maka tidak mungkin memiliki akses di dalamnya.

Lihat permintaan tarik #2711 dan masalah #2714

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

mghoffmann picture mghoffmann  ·  6Komentar

tiagochiavericosta picture tiagochiavericosta  ·  6Komentar

akhiljns picture akhiljns  ·  5Komentar

Ahmed-Benj picture Ahmed-Benj  ·  7Komentar

krisgesling picture krisgesling  ·  3Komentar