Сообщество вконтакте: vk.com/qa_ninjas
Подписывайтесь на телеграм канал: teleg.run/QA_NINJAS
В сегодняшней статье мы рассмотрим как разделить ответственность в нашем тесте на исполняющую часть и исполнительную.
Исполняющая часть будет оформлена так, чтобы Python его считал настоящим тестом и для его исполнения (этого теста) вызывал Pytest.
Pytest — Это фреймворк для тестирования в Python.
«Pytest is a mature full-featured Python testing tool that helps you write better programs» (со слов разработчиков). На самом деле это самый востребованный фрейм в Python для E2E тестирования.
Я думаю что перед этим уроком, вам будет необходимо самостоятельно углубиться в изучение Python и понять что такое функция (def) и что такое оператор return.
Как всегда, готовый код я выложил в гист:
https://gist.github.com/nekitvand/704c1c72a9343fc8f635f8ee37e14196
Первым делом, мы оборачиваем нашу инициализацию драйвера в функцию, и вернем значение функции оператором return (она отработает и вернет то — что мы закладывали в нее).
Функцию мы назовем driver_initialization (понятно почему такое название =) ):
Далее, мы создаем функцию, которая будет исполнять все действия на странице Яндекс.Поиска, поэтому мы ее назовем как yandex_search.
Нам необходимо в эту функцию передать атрибут drive (наш WebDriver), для того, чтобы мы могли обращаться к нему в этой функции (yandex_search):
Далее, нам необходимо вынести в отдельную функцию — закрытие браузера (quit). Делается это аналогично созданию функции yandex_search.
Новую функцию назовем browser_close и также передадим в нее атрибут driver:
Далее, нам необходимо создать отдельный Python файл, который как раз будет выступать в роли исполнителя.
Так как создание файлов Python мы рассматривали ранее, то прошу подсмотреть в предыдущей статье, если вы забыли процесс создания.
Создать необходимо файл под названием test_yandex.py. Именно такое наименование (test_ в начале названия файла) мы используем для того, чтобы обозначить, что это — файл с тестами (это важно для Pytest).
Внутри файла test_yandex.py делаем импорт файла yandex:
P.S. Он имеет серое свечение, потому что мы им еще не воспользовались.
Далее, создаем функцию test_yandex_search. Здесь тоже используем в названии test_ по аналогии описанной выше:
Далее начинается магия :D
Мы должны обратиться к файлу Yandex и от туда получить первую функцию yandex_search, в которую необходимо передать yandex.driver_initialization(), что тоже является функцией, которая инициализирует браузер (она находиться в файле Yandex). По аналогии мы так же вызываем вторую функцию yandex.browser_close:
На этом, мы закончили рефакторить свой код для использования Pytest.
Теперь необходимо запустить наш файл test_yandex в режиме test:
При запуске нашего теста, в PyCharm активируется режим отображения хода тестирования:
Если Вы все сделали правильно и Ваше тест успешно прошел — появиться заветная зеленая галочка:
Поздравляю! Теперь Вам удалось прогнать свой первый тест через Pytest!