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:
Dimana letak kesalahannya?
Saya harus menggunakan kata kunci "berisi" atau "termasuk"?
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:
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
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: