О проекте
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.
Metadata
Release files for sbt-zapp 3.13.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sbt_zapp-3.13.4.tar.gz | 77.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sbt_zapp-3.13.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 175.3 kB
Release files / sbt_zapp-3.13.4.tar.gz
| Download URL | sbt_zapp-3.13.4.tar.gz |
|---|---|
| Size | 77.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d00f1bbe31490e23ad273f8520e7290926904213d11a89ca42c65e09fe0e138
|
|
BLAKE2b-256 checksum How to use checksums |
c602ca9c538d7c8d9fccca3f814063fdfa2f99cf445091171613596e78f7c242
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.13.2 Darwin/24.5.0
|
Release files / sbt_zapp-3.13.4-py3-none-any.whl
| Download URL | sbt_zapp-3.13.4-py3-none-any.whl |
|---|---|
| Size | 98.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
542dc61a5a7a6d7a0f94cabe3f1693d424d51248e4be3a58cc99fd06ee389a6d
|
|
BLAKE2b-256 checksum How to use checksums |
6e656b8544967ba3cc960ef8249e8f9d4cad0d8f32e3add37889f8f3365b32b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.13.2 Darwin/24.5.0
|