zapp
Описание
ZAPP - это фреймворк для UI-тестирования на основе BDD. Возможности: Запуск тестов на основе сценариев, описанных в синтаксисе gherkin, то есть практически русским языком, описывающим действия со стороны пользователя. Является форком https://gitverse.ru/domclick/zapp
Языки
- Python90,2%
- Gherkin9,8%

О проекте
ZAPP - это фреймворк для UI-тестирования на основе BDD.
Возможности:
- Запуск тестов на основе сценариев, описанных в синтаксисе gherkin, то есть практически русским языком, описывающим действия со стороны пользователя.
- Отображение результатов выполнения тестов в JIRA с привязкой к версиям проекта или к пользовательским историям.
Установка
Установка в виде python-приложения
Требования:
- Установлен VSCode (можно использовать любую другую IDE)
- Установлен Python версии >=3.10.0,<3.13.0
- Создано и активировано виртуальное окружение (venv):
- python -m venv ./.venv
(для *nix, MacOS);source ./.venv/bin/activate(для Win).\.venv\Scripts\activate(для Win)pip install tzdata
- Установлен poetry (
)pip3 install poetry
Шаги:
- Склонировать проект (
)git clone <...> - Настроить виртуальное окружение и установить необходимые зависимости (в корне проекта ввести:
)poetry install
Запуск
Запуск в vscode
Стартовой точкой является: . Для VSCode можно использовать .
Запуск через терминал:
- Обязательным параметром является
:config(предварительно перейти в подпапку zapp:python3 run.py --config=<...>).cd zapp - Предварительно необходимо перейти в подпапку zapp: cd zapp
- Ввести команду
, можете создать и изменять свой конфигpython run.py --config=zapp-demo.config.json
Запуск средствами IDE от JetBrains
- Открываем
->Run/Debug Configurations->Edit configurationsи ставим путь доScript/zapp/zapp/run.py - Открываем
->Run/Debug Configurations->Edit configurationsи прописываемScript parameters--config=ваш.конфиг.json ставим:Working directory\zapp\zapp
Перед первым запуском рекомендуется создать в корне файл конфига zapp.config.json, который будет считываться по умолчанию:
{
"PROJECT": "JIRA",
"TEST_STAND": "https://example.com",
"ENV": "STAGE",
"DEBUG": "True",
"ELEMENT_TIMEOUT": "7",
"tags": "@demo",
}
- PROJECT - Имя тестируемого проекта в Jira
- TEST_STAND - основная страница проекта (используется в шаге Я перешел на главную страницу)
- ENV - тип тестируемой среды (QA, STAGE, PROD)
- DEBUG - режим вывода более подробных логов (вляет на уровень логирования. При False log_level = INFO)
- ELEMENT_TIMEOUT - время максимального ожидания появления элемента или наступления события
- tags - тег(теги) по которым будут запускаться тесты (является параметром behave, аналогичным образом можно задавать параметры командной строки behave по умолчанию через конфиг)
Запись
Эквивалентна параметрам командной строки
(запустить все тесты, содержащие хотя бы один из тегов first_page/second_page и при этом содержащие тег base и не содержащие тег wip)
Это основные параметры фреймворка, к ним пользователь может добавить любое количество тестовых переменных.
Рекомендуется именовать их в верхнем регистре и через подчеркивания (правила именований переменных окружения). Например:
"MY_TEST_VAR": "my test string 1"
Каждый из параметров можно перекрывать параметром командной строки. Например:
python run.py --TEST_STAND=new.example.com --BROWSER=firefox
Также zapp умеет работать с разными наборами параметров. Указывая параметр командной строки --config можно выбирать файл (относительно корня установки), который будет использоваться для загрузки параметров:
python run.py --config=other_dir/zapp-second.config.json
python run.py --config=zapp-second.config.json --ENV=STAGE --BROWSER=firefox
При этом параметры, указанные в команде запуска перекроют значения, записанные в конфиге.
Состав файлов
Примеры файлов, необходимых для реализации тестов находятся в папке features
- <имя>.feature - файлы сценариев тестов. Содержат background секцию, выполняемую перед каждым сценарием и один или несколько тестовых сценариев. Расположены в папке features.
- <имя>_locators.py - файлы со списком локаторов элементов. В момент запуска доступны элементы из всех файлов локаторов одновременно, независимо от названия фичи или файла локаторов. Расположены в папке features/steps (постфикс и расположение файлов с локаторами можно переопределить через переменные
иLOCATORS_DIR)LOCATORS_FILE_POSTFIX - <имя>_steps.py - вспомогательные файлы с дополнительными шагами, расширяющими библиотеку шагов. Для правильной работы требуется добавить два импорта:
from zapp.features.steps.steps_library import *
from behave import *
Рекомендации
- Для реализации крупных декларативных шагов рекомендуется использовать context.execute_steps (см. zapp_demo_steps.py)
- Для каждой фичи лучше создавать новый файл с локаторами, именуя его по образцу __locators
- 1 фича = 1 файл .feature
Интеграция с Zephyr Server (API v1)
Список параметров:
- USE_ZEPHYR -- вкл/выкл синхронизация (по умолчанию: False).
- JIRA_HOST -- адрес развернутой Jira c плагином Zephyr (по умолчанию: https://sberworks.ru/jira).
- JIRA_USER -- имя пользователя для авторизации в Jira по логину и паролю (по умолчанию: None).
- JIRA_PASSWORD -- пароль пользователя для авторизации в Jira по логину и паролю (по умолчанию: None).
- JIRA_TOKEN -- токен для авторизации в Jira (по умолчанию: None). Используется в первую очередь: даже при наличии JIRA_USER и JIRA_PASSWORD.
- ZEPHYR_TEST_RUN -- ключ Test Cycle (по умолчанию: None).
- "" -- пустой, не будет привязки тестов к Test Cycle
- "new" -- будет создан новый.
- Все другие значения будут восприниматься как ключ уже существующего Test Cycle
- ZEPHYR_TEST_CASE_SEARCH_TYPE -- тип поиска ТК в Zephyr: CUSTOM_FIELD или KEY.
- При CUSTOM_FIELD (значение по умолчанию) будет создан новый ТК при отсутствии подходящего ТК по комбинации
CUSTOM_FIELD (
) и его значения из аннотации.ZEPHYR_TEST_CASE_CUSTOM_FIELD_NAME - При KEY происходит поиск уже существующих ТК по значению в аннотации
; новый не создается -- будет выброшена ошибка при ненахождении.allure.link.tms
- При CUSTOM_FIELD (значение по умолчанию) будет создан новый ТК при отсутствии подходящего ТК по комбинации
CUSTOM_FIELD (
- ZEPHYR_TEST_CASE_FOLDER -- задает директорию для сохранения всех ТК при обновлении (по умолчанию: None, т. е. директория не изменяется).
- ZEPHYR_TEST_CASE_CUSTOM_FIELD_NAME -- название Custom Field в Test Case, по которому будет происходить поиск (по умолчанию: ZephyrLabel).
- ZEPHYR_TEST_CASE_RELEASE_UPDATE -- вкл/выкл создания новой версии ТК при несовпадении указанного
релиза (
) с уже заданным в предыдущей версии (по умолчанию: False).ZEPHYR_RELEASE_VERSION - ZEPHYR_RELEASE_CHECK_TYPE -- тип проверки версии релиза у ТК: CUSTOM_FIELD или LABEL.
- При CUSTOM_FIELD (значение по умолчанию) берется значение из заданного (
) поля и сравнивается с переданным (ZEPHYR_RELEASE_CUSTOM_FIELD_NAME).ZEPHYR_RELEASE_VERSION - При LABEL проверка версии будет осуществляться по меткам Test Case.
- При CUSTOM_FIELD (значение по умолчанию) берется значение из заданного (
- ZEPHYR_RELEASE_CUSTOM_FIELD_NAME -- название Custom Field в Test Case для проставления версии релиза (по умолчанию: Релиз).
- ZEPHYR_RELEASE_VERSION -- версия релиза для обновления ТК при необходимости (по умолчанию: None).
- ZEPHYR_RELEASE_REGEX -- регулярное выражение для поиска версии релиза в метках ТК (по умолчанию:
).([0-9.]*)
Стратегия запуска браузера
Существует три варианта запуска:
- Один экземпляр на весь тестовый прогон. (Поведение по умолчанию.)
- На каждую фичу создается свой экземпляр браузера.
- На каждый сценарий создается свой экземпляр браузера.
Поведение определяется настройкой , которая может принимать значения:
, , и .