Mycroft-core: Behave Test Problem : "Then reply should contain | include"κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 09μ›” 30일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: MycroftAI/mycroft-core

λ‚΄ μ‹€λ ₯에 λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λ €κ³ ν•©λ‹ˆλ‹€.
Behave ν”„λ ˆμž„ μ›Œν¬λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
mycroft λ¬Έμ„œμ—μ„œ Behave둜 ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λ©΄ mycroft 응닡에 νŠΉμ • 단어가 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό 확인할 μˆ˜μžˆλŠ” κ°€λŠ₯성이 ν‘œμ‹œλ©λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ μ œμ‹œλœ λͺ¨λ“  방법이 μ €μ—κ²Œ νš¨κ³Όκ°€ μ—†μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ‹œλ„ν–ˆλ‹€ :

  • 그러면 "mycroft-skill"νšŒμ‹ μ— [단어]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그러면 "mycroft-skill"이 [dialog file] λŒ€ν™” μƒμžλ‘œ μ‘λ‹΅ν•΄μ•Όν•˜μ§€λ§Œ μ‘λ‹΅μ—λŠ” [word]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그런 λ‹€μŒ "mycroft-skill"이 [λŒ€ν™” μƒμž 파일] λŒ€ν™” μƒμžλ‘œ μ‘λ‹΅ν•΄μ•Όν•©λ‹ˆλ‹€. 그런 λ‹€μŒ "mycroft-skill"응닡에 [word]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그런 λ‹€μŒ "mycroft-skill"은 [dialog file] λŒ€ν™” μƒμžλ‘œ μ‘λ‹΅ν•΄μ•Όν•˜μ§€λ§Œ "mycroft-skill"μ‘λ‹΅μ—λŠ” [word]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그러면 "mycroft-skill"이 [dialog file] λŒ€ν™” μƒμžλ‘œ μ‘λ‹΅ν•΄μ•Όν•˜μ§€λ§Œ μ‘λ‹΅μ—λŠ” [word]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그런 λ‹€μŒ "mycroft-skill"이 [dialog file] λŒ€ν™” μƒμžλ‘œ μ‘λ‹΅ν•΄μ•Όν•©λ‹ˆλ‹€. 그런 λ‹€μŒ "mycroft-skill"응닡에 [word]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그런 λ‹€μŒ "mycroft-skill"은 [dialog file] λŒ€ν™” μƒμžλ‘œ μ‘λ‹΅ν•΄μ•Όν•˜μ§€λ§Œ "mycroft-skill"μ‘λ‹΅μ—λŠ” [word]κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.

μ‹€μˆ˜λŠ” 어디에 μžˆμŠ΅λ‹ˆκΉŒ?
ν‚€μ›Œλ“œ "포함"λ˜λŠ” "포함"을 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆκΉŒ?

For discussion Enhancement - proposed help wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이봐, λ‚˜λŠ” λ¬Έμ„œμ—μ„œ κ·Έ 예λ₯Ό λ³€κ²½ν–ˆλ‹€. 그것은 제 μ‹€μˆ˜μ˜€μŠ΅λ‹ˆλ‹€.

더 넓은 "mycroft 응닡"λ‹¨κ³„λŠ” 쒋은 닡변을 μ–»λŠ” ν•œ μ‹€μ œλ‘œ μ–΄λ–€ μŠ€ν‚¬μ΄ μ‘λ‹΅ν•˜λŠ”μ§€ μ‹ κ²½ 쓰지 μ•Šμ„ λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ—νŽ  νƒ‘μ˜ 높이와 같은 일반적인 지식 μ§ˆλ¬Έμ— λ‹΅ν•˜λŠ” 것은 DuckDuckGo, Wikipedia λ˜λŠ” Wolfram Alpha 일 수 μžˆμ§€λ§Œ μ–΄λŠ μͺ½μ΄λ“  μ—¬μ „νžˆ 성곡적인 μƒν˜Έ μž‘μš©μž…λ‹ˆλ‹€.

문제λ₯Ό 제기 ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ‹€μŒμ€ λͺ¨λ‘ μƒˆλ‘œμš΄ λ‹¨κ³„λ‘œ μΆ”κ°€ν•˜κΈ°μ— 쒋은 후보라고 μƒκ°ν•©λ‹ˆλ‹€.

  • 그러면 {skill} 응닡에 "{text}"κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그러면 {skill} 응닡에 "{text}"κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.
  • mycroft νšŒμ‹ μ—λŠ” "{text}"κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.

λͺ¨λ“  5 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” 단어λ₯Ό ν¬ν•¨ν•˜λŠ” ꡬ문은

Then mycroft reply should contain "SOMETHING CLEVER"

SOMETHING CLEVERλŠ” mycroftμ—μ„œ μ˜ˆμƒλ˜λŠ” μ˜λ¦¬ν•œ μ‘λ‹΅μž…λ‹ˆλ‹€. :)

μ •μ˜λŠ” μ—¬κΈ° λ₯Ό μ°Έμ‘° 예제 λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

"ν¬ν•¨ν•˜μ§€ μ•Šμ•„μ•Ό 함"단계λ₯Ό λ³Έ 적이없고 λ¬Έμ„œμ—μ„œ μ°Έμ‘°ν•˜λŠ” 것을 λ³΄μ•˜μ§€λ§Œ 주둜 예라고 μƒκ°ν•©λ‹ˆλ‹€.

λ¬Έμ œλŠ” κ°€μž₯ κ°„λ‹¨ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
"should contains"의 μ •μ˜μ— μ£Όλͺ©ν•˜λŠ” 경우 λ‹€λ₯Έ λ‹¨κ³„μ²˜λŸΌ {skill} 속성을 μ‚¬μš©ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. λ”°λΌμ„œμ΄ 단계λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ "Then {skillname} ..."이 μ•„λ‹ˆλΌ "Then mycroft ..."λ₯Ό μž‘μ„±ν•΄μ•Όν•©λ‹ˆλ‹€.

이 μ •μ˜ 두 개λ₯Ό λΉ„κ΅ν•˜μ‹­μ‹œμ˜€ ...
@then ( 'mycroft νšŒμ‹ μ—λŠ” "{text}"κ°€ ν¬ν•¨λ˜μ–΄μ•Ό 함')
λ‹€λ₯Έ λ‹¨κ³„μ²˜λŸΌ
@then ( ' "{skill}"은 μ •ν™•νžˆ "{text}"'둜 μ‘λ‹΅ν•΄μ•Όν•©λ‹ˆλ‹€.)

이봐, λ‚˜λŠ” λ¬Έμ„œμ—μ„œ κ·Έ 예λ₯Ό λ³€κ²½ν–ˆλ‹€. 그것은 제 μ‹€μˆ˜μ˜€μŠ΅λ‹ˆλ‹€.

더 넓은 "mycroft 응닡"λ‹¨κ³„λŠ” 쒋은 닡변을 μ–»λŠ” ν•œ μ‹€μ œλ‘œ μ–΄λ–€ μŠ€ν‚¬μ΄ μ‘λ‹΅ν•˜λŠ”μ§€ μ‹ κ²½ 쓰지 μ•Šμ„ λ•Œ μœ μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ—νŽ  νƒ‘μ˜ 높이와 같은 일반적인 지식 μ§ˆλ¬Έμ— λ‹΅ν•˜λŠ” 것은 DuckDuckGo, Wikipedia λ˜λŠ” Wolfram Alpha 일 수 μžˆμ§€λ§Œ μ–΄λŠ μͺ½μ΄λ“  μ—¬μ „νžˆ 성곡적인 μƒν˜Έ μž‘μš©μž…λ‹ˆλ‹€.

문제λ₯Ό 제기 ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ‹€μŒμ€ λͺ¨λ‘ μƒˆλ‘œμš΄ λ‹¨κ³„λ‘œ μΆ”κ°€ν•˜κΈ°μ— 쒋은 후보라고 μƒκ°ν•©λ‹ˆλ‹€.

  • 그러면 {skill} 응닡에 "{text}"κ°€ ν¬ν•¨λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.
  • 그러면 {skill} 응닡에 "{text}"κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.
  • mycroft νšŒμ‹ μ—λŠ” "{text}"κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.

확인. 정말 κ³ λ§ˆμ›Œ. 이제 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... , κ·Έλž˜μ„œ μ‚¬μš©ν•˜λŠ” 것 κ°™λ„€μš” But | 그리고, 응닡에 νŠΉμ • 단어가 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μƒˆλ‘œμš΄ 응닡을 μœ„ν•΄ μ°Έμ„ν•©λ‹ˆλ‹€.
λ˜ν•œ λ™μž‘ λ‹¨κ³„μ˜ μ •μ˜μ—λŠ” And λ˜λŠ” But ν‚€μ›Œλ“œκ°€μžˆλŠ” 이전 μ‘λ‹΅μ—μ„œ μž‘λ™ν•˜λŠ” 포함 단계에 λŒ€ν•œ μ°Έμ‘°κ°€ μ—†μŠ΅λ‹ˆλ‹€.

νŽΈμ§‘ν•˜λ‹€:

이 λ™μž‘μ€ λ™μž‘μ˜ 정상적인 λ™μž‘μž…λ‹ˆλ‹€.
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 λ©”μ‹œμ§€ λ²„μŠ€κ°€ 주어진 응닡을 μ €μž₯ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 응닡이 μ†ŒλΉ„ 될 λ•Œ μ•‘μ„ΈμŠ€ ν•  수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

pull request # 2711 및 issue # 2714 참쑰

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰