test.helper.yandex.alice.flask

Class for autotests YandexAlice skill, that implemented as flask application

MIT License

Downloads
61
Stars
2
Committers
2

Класс для автотестов навыка ЯндексАлисы

Класс python для автоматического тестирования навыка Яндекс Алиса, реализованного на python/flask.

Установка:

pip install tester_alice_skill_flask

Использование:


from tester_alice_skill_flask import Interface, Skill
from buy_elephant import app  # импортируем приложение flask из тестируемой программы

# создаем экземпляр навыка
skill = Skill(
  app,
  'xxx-yyy-zzz',  # идентификатор навыка из кабинета разработчика
  '/alice',  # адрес, на котором приложение принимает запросы от Алисы
  is_screen_need=False  # наличия устройства с экраном для работы навыка не требуется
)

# новая сессия работы с Яндекс.Алиса
session = skill.new_session(
  '1234567890',  # ID пользователя Алисы, создавшего сессию
  [Interface.Screen],  # сессия открывается для устройства с экраном
  locale='ru-RU',
  timezone="Europe/Moscow",
  client_id="ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)",
  command=""  # опциональная команда, передаваемая при запуске навыка. например, 'помощь'
)

# история диалога содержит подстроку
assert session.contain("Купи слона!")

# диалог содержит две кнопки
assert len(session.buttons) == 2

# нажать первую кнопку
session.send_button(0)

assert session.contain("Все говорят")

# послать текст
session.send("Отстань!", command="", nlu={"entities": [], "tokens": []})

# вывести текущую историю диалога
print(session.dump())

Q:
A: Привет! Купи слона!

Q: [Не хочу.]
A: Все говорят "Не хочу.", а ты купи слона!

Q: Отстань!
A: Все говорят "Отстань!", а ты купи слона!

[Отстань!] [Ладно]

# очистить историю диалога
session.clear()

# купить слона
session.send("ладно")

assert session.contain("Слона можно найти на Яндекс.Маркете!")
assert not session.contain("Все говорят")