BDD-based framework for UI testing
Project description
О проекте
ZAPP - это фреймворк для UI-тестирования на основе BDD.
Возможности:
- Запуск тестов на основе сценариев, описанных в синтаксисе gherkin, то есть практически русским языком, описывающим действия со стороны пользователя.
- Отображение результатов выполнения тестов в JIRA с привязкой к версиям проекта или к пользовательским историям.
Установка
Установка в виде python-приложения
Требования:
- Установлен VSCode (можно использовать любую другую IDE)
- Установлен Python версии >=3.10.0,<3.13.0
- Создано и активировано виртуальное окружение (venv):
python -m venv ./.venvsource ./.venv/bin/activate(для *nix, MacOS);.\.venv\Scripts\activate(для Win)pip install tzdata(для Win)
- Установлен poetry (
pip3 install poetry)
Шаги:
- Склонировать проект (
git clone <...>) - Настроить виртуальное окружение и установить необходимые зависимости (в корне проекта ввести:
poetry install)
Запуск
Запуск в vscode
Стартовой точкой является: run.py. Для VSCode можно использовать .vscode/launch.json.
Запуск через терминал:
- Обязательным параметром является
config:python3 run.py --config=<...>(предварительно перейти в подпапку zapp: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 по умолчанию через конфиг)
Запись
"tags": ["@first_page,@second_page" ,"@base","~@wip"],
Эквивалентна параметрам командной строки
--tags=@first_page,@second_page --tags=@base --tags=~@wip
(запустить все тесты, содержащие хотя бы один из тегов 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 -- вкл/выкл создания новой версии ТК при несовпадении указанного
релиза (
ZEPHYR_RELEASE_VERSION) с уже заданным в предыдущей версии (по умолчанию: False). - 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.]*)).
Стратегия запуска браузера
Существует три варианта запуска:
- Один экземпляр на весь тестовый прогон. (Поведение по умолчанию.)
- На каждую фичу создается свой экземпляр браузера.
- На каждый сценарий создается свой экземпляр браузера.
Поведение определяется настройкой BROWSER_LIFECYCLE, которая может принимать значения:
ONE_INSTANCE, EACH_FEATURE, EACH_SCENARIO и MANUAL.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sbt_zapp-3.13.4.tar.gz.
File metadata
- Download URL: sbt_zapp-3.13.4.tar.gz
- Upload date:
- Size: 77.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.2 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d00f1bbe31490e23ad273f8520e7290926904213d11a89ca42c65e09fe0e138
|
|
| MD5 |
7a5741fbccc9d04aff52ce940f7a728a
|
|
| BLAKE2b-256 |
c602ca9c538d7c8d9fccca3f814063fdfa2f99cf445091171613596e78f7c242
|
File details
Details for the file sbt_zapp-3.13.4-py3-none-any.whl.
File metadata
- Download URL: sbt_zapp-3.13.4-py3-none-any.whl
- Upload date:
- Size: 98.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.2 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
542dc61a5a7a6d7a0f94cabe3f1693d424d51248e4be3a58cc99fd06ee389a6d
|
|
| MD5 |
9fec412c68b4b1135ebce4b6bd312fcc
|
|
| BLAKE2b-256 |
6e656b8544967ba3cc960ef8249e8f9d4cad0d8f32e3add37889f8f3365b32b6
|