# pytest-zephyr-scale-integration

![PyPI](https://img.shields.io/pypi/v/pytest-zephyr-scale-integration)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Python](https://img.shields.io/badge/python-3.6%2B-brightgreen.svg)

`pytest-zephyr-scale-integration` — это библиотека для интеграции `pytest` с Jira Zephyr (Adaptavist\TM4J). 
Она позволяет автоматически создавать тестовые циклы в Zephyr, запускать тесты и обновлять их статусы в Jira.

## Возможности

- Автоматическое создание тестовых циклов в Zephyr.
- Обновление статусов тестов в Jira Zephyr.
- Поддержка параметризованных тестов.
- Гибкая настройка через файл `.env`.

## Установка

Установить библиотеку можно через `pip`:
```bash
pip install pytest-zephyr-scale-integration
```

## Запуск
1. Создать файл `.env` и заполнить его полями
```commandline
# Статусы тестов в Adaptavist
NOT_EXECUTED=3236
IN_PROGRESS=3237
PASS=3238
FAIL=3239
BLOCKED=3240

# Конфигурация JIRA
JIRA_TOKEN='Jira_Token' # продпочтительнее использовать ТУЗ, у которого настроена электронная почта.
JIRA_PROJECT_NAME='Проект' # ключ проекта, например, "BAR"
JIRA_PROJECT_ID=12345 # id проекта, можно узнать вызвав `GET /rest/tests/1.0/project`
JIRA_URL='https://your-jira-instance.atlassian.net'
```
2. Называть тесты нужно по имени ключа тест-кейса  Jira Zephyr, например, `"test_T123"`.
3. При запуске автотестов через `pyest` нужно указать дополнительные параметры: <br>
`--zephyr` - вкл процесса интеграции. После прохождения автотестов будет автоматически 
создан тестовый цикл. <br>
`--test_run_name` - наименования тестового цикла, по-умолчанию - "Test Run Cycle". <br>
Например, <br>
```pytest --zephyr --test_run_name="Regress v.1.1.0"```

## Логика установки статусов тест-кейсам в Jira Zephyr
Всем тест-кейсам устанавливаются соответствующие pytest'у статусы в Jira Zephyr. <br>

Если в Jira Zephyr написан параметризованный тест, то в тестовом 
цикле он будет выглядеть как один тест с тестовыми скриптами в 
колчичестве равном набору параметров в тест-кейсе. Каждый такой набор называется `Test Script`. <br>
При автоматизации такого тест-кейса нужно делать параметризацию и в коде. Наборы в `pyest` должны идти
в том же порядке, что и в Zephyr, так как `pyest` выполняет их по порядку.

В тестовом цикле результаты прохождения одного параметризованного теста отображаются в 
шагах `Test Script'а`, чтобы можно было явно определить какой из всех наборов оказался упавшим.
Логика установки статусов у шагов параметризованных тестов:
- Если набор пройден успешно, то все шаги `Test Script'а` - PASS
- Если набор упал, то все шаги `Test Script'а` - FAIL.

Логики по сопоставлению действий в `pytest' и шагов в Zephyr нет.

Логика установки статусов и тест-кейсов:
- Если все наборы пройдены успешно, то тест-кейс - PASS
- Если хотя бы один набор упал, то тест-кейса отмечается как FAIL.

