Всем привет! Я Никита Вандышев, ведущий QA-инженер в Тинькофф Мессенджере.
Во время собеседований QA-инженеров я заметил, что многие знают про то, как создавать фикстуры, но мало кто знает про существование встроенных фикстур в Pytest.
Встроенные фикстуры — хороший инструмент, чтобы не создавать свои велосипеды и эффективно использовать мощь фреймворка, которую хотели передать авторы. Фикстуры помогают в разных случаях: при работе с выводом ошибок, логировании, создании отчетов и так далее. В статье разберем основные встроенные фикстуры и их применение в Pytest.
Когда я начинал изучать автоматизацию тестирования, не мог понять — “что такое Page Object и как его реализовать на Python + pytest?”. Штудируя интернет, нашел реализацию на других языках и фреймворках: обучающие статьи, которые были непонятны для меня. Поэтому решил написать этот разбор. Идея — показать реализацию на Python + pytest и объяснить ее доступным языком.
Что такое Page Object
Это популярный паттерн, который является де-факто стандартом в автоматизации тестирования веб-продуктов. Основная идея состоит в том, чтобы разделить логику тестов от реализации.
Каждую веб-страницу проекта можно описать в виде объекта класса. Взаимодействие пользователя описываются в методах класса, а в тестах остается только бизнес-логика. Данный подход помогает избежать проблем с тестами при изменении верстки веб-приложения. Вам необходимо поправить только класс, описывающий страницу.
Отсутствие возможности запуска автотестов из любой точки \ устройства.
QA инженеры ручного тестирования не могли самостоятельно проводить запуск автотестов.
Поэтому я решил создать небольшой прототип бота для запуска автоматизированных тестов, который бы закрывал большую часть вышеописанных проблем.
Описание идеи:
Пользователь отправляет необходимые команды в чат, запускает билд в CI системе, по заданным правилам в конфиге. CI запускает автотесты с помощью pytest marks. После прогона, скрипт внутри репозитория с тестами получает информацию о состоянии сборки, собирает логи и отправляет обратно пользователю в телеграм чат.