Найти тему
Nikita Vandishev

Автоматизация тестирования с помощью Python. Разделение ответственности

Сообщество вконтакте: 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):

-2

Далее, нам необходимо вынести в отдельную функцию — закрытие браузера (quit). Делается это аналогично созданию функции yandex_search.

Новую функцию назовем browser_close и также передадим в нее атрибут driver:

-3

Далее, нам необходимо создать отдельный Python файл, который как раз будет выступать в роли исполнителя.

Так как создание файлов Python мы рассматривали ранее, то прошу подсмотреть в предыдущей статье, если вы забыли процесс создания.

Создать необходимо файл под названием test_yandex.py. Именно такое наименование (test_ в начале названия файла) мы используем для того, чтобы обозначить, что это — файл с тестами (это важно для Pytest).

Внутри файла test_yandex.py делаем импорт файла yandex:

-4

P.S. Он имеет серое свечение, потому что мы им еще не воспользовались.

Далее, создаем функцию test_yandex_search. Здесь тоже используем в названии test_ по аналогии описанной выше:

-5

Далее начинается магия :D

Мы должны обратиться к файлу Yandex и от туда получить первую функцию yandex_search, в которую необходимо передать yandex.driver_initialization(), что тоже является функцией, которая инициализирует браузер (она находиться в файле Yandex). По аналогии мы так же вызываем вторую функцию yandex.browser_close:

-6

На этом, мы закончили рефакторить свой код для использования Pytest.

Теперь необходимо запустить наш файл test_yandex в режиме test:

-7

При запуске нашего теста, в PyCharm активируется режим отображения хода тестирования:

-8

Если Вы все сделали правильно и Ваше тест успешно прошел — появиться заветная зеленая галочка:

-9

Поздравляю! Теперь Вам удалось прогнать свой первый тест через Pytest!