Pytest-bdd

Используйте хуки pytest-bdd для создания снимков экрана после каждого шага.

При применении автоматизированного тестирования нам часто нужно сделать снимок экрана, а затем опубликовать отчет о тестировании где-нибудь, чтобы мы могли просмотреть его позже. Крючки Pytest предлагают такую ​​возможность. Мы можем вызывать нужные функции в хуке, чтобы фреймворк делал именно то, что мы хотим.

В предыдущем посте мы уже рассмотрели, как реализовать простой тест с использованием синтаксиса корнишона с помощью pytest-bdd. Теперь наступает часть, в которой нам нужно вызвать некоторые функции для создания отчетов. Здесь мы рассмотрим, как сохранить скриншот и опубликовать результат в testrail с помощью хука pytest-bdd.

Большинство тестовых фреймворков предоставляют способы, с помощью которых мы можем переопределить некоторые предопределенные методы для выполнения определенных действий, когда тест не пройден, пройден или пропущен, находится в ожидании и т. д. Например, в junit у нас есть наблюдатель за тестами:

Pytest-bdd — это среда тестирования bdd, поэтому, помимо возможности вызова с ошибкой, пройденным тестом (из pytest), он предоставляет некоторые хуки, как показано ниже:

  • pytest_bdd_before_scenario (запрос, функция, сценарий) — вызывается перед выполнением сценария.
  • pytest_bdd_after_scenario(запрос, функция, сценарий) — вызывается после выполнения сценария (даже если один из шагов не удался)
  • pytest_bdd_before_step (запрос, функция, сценарий, шаг, step_func) — вызывается перед выполнением функции шага и оценкой ее аргументов.
  • pytest_bdd_before_step_call(запрос, функция, сценарий, шаг, step_func, step_func_args) — Вызывается перед выполнением пошаговой функции с оцененными аргументами
  • pytest_bdd_after_step(запрос, функция, сценарий, шаг, step_func, step_func_args) — Вызывается после успешного выполнения пошаговой функции
  • pytest_bdd_step_error(запрос, функция, сценарий, шаг, step_func, step_func_args, исключение) — вызывается, когда пошаговая функция не может быть выполнена
  • pytest_bdd_step_validation_error(запрос, функция, сценарий, шаг, step_func, step_func_args, исключение) — вызывается, когда шаг не прошел проверку
  • pytest_bdd_step_func_lookup_error (запрос, функция, сценарий, шаг, исключение) — вызывается при сбое поиска шага.

Мы будем использовать метод pytest_bdd_after_step, чтобы делать скриншот теста после каждого шага. Помните, что вам нужно было поместить pytest_bdd_after_step в файл conftest.py.

Делаем снимок экрана, затем загружаем его на гугл диск. После этого сохраните ссылку на снимок экрана в файле testrail_comment. Testrail API не поддерживает добавление вложенных файлов до версии 6.3.

Сделав скриншот для каждого шага, мы хотим объединить скриншоты и опубликовать результат в testrail. Мы реализуем это в pytest_runtest_makereport.

Теперь, когда мы реализуем тест, у нас будет скриншот для каждого шага, например:

Просто не правда ли?

Спасибо за чтение моего блога.

Удачного тестирования!!!