CLI для Allure TestOps: получение Allure ID тест-кейса по названию
Project description
Allure CLI
CLI для работы с Allure TestOps. Основная задача — получение Allure ID тест-кейса по названию.
Требования
- Python 3.10+
- Внешние зависимости не нужны (только stdlib)
Установка
pip install allure-cli
После установки команда allure_cli будет доступна в PATH.
Настройка
Переменные окружения (или аргументы --url, --token, --project):
| Переменная | Описание |
|---|---|
ALLURE_ENDPOINT или ALLURE_TESTOPS_URL |
Базовый URL Allure TestOps (например, https://allure-testops.example.com) |
ALLURE_TOKEN |
API-токен (создаётся в Allure: профиль → API Tokens) |
ALLURE_PROJECT_ID |
ID проекта (например, 211) |
Постоянно (zsh/bash): добавьте в ~/.zshrc или ~/.bashrc:
# Allure TestOps CLI
export ALLURE_ENDPOINT="https://allure-testops.example.com"
export ALLURE_PROJECT_ID="YOUR_PROJECT_ID"
export ALLURE_TOKEN="<YOUR_TOKEN>"
Использование
CLI поддерживает две команды:
search(по умолчанию) — поиск тест-кейсов по ID или названиюfind-orphaned— поиск осиротевших (устаревших) тестов
Справка:
# Общая справка
allure_cli
allure_cli --help
# Справка по команде search
allure_cli search
allure_cli search --help
# Справка по команде find-orphaned
allure_cli find-orphaned --help
Команда search (поиск тестов)
export ALLURE_ENDPOINT=https://allure-testops.example.com
export ALLURE_PROJECT_ID=211
export ALLURE_TOKEN=<ваш_токен>
# Поиск по подстроке названия
allure_cli search "Автоответ в чат"
# Старый синтаксис (без команды) тоже работает
allure_cli "Автоответ в чат"
# Показать справку
allure_cli search
allure_cli search --help
Примеры:
# Поиск по подстроке названия — выводит id и name с цветами
allure_cli search "Автоответ в чат"
# Поиск по ID (число)
allure_cli search 12345
# Только ID, по одному на строку (без цветов)
allure_cli search -q "Автоответ в чат"
# Без цветов
allure_cli search --no-color "Автоответ в чат"
# Параметры через аргументы
allure_cli search --url https://allure-testops.example.com --project 211 --token $ALLURE_TOKEN "запрос"
Вывод:
- В обычном режиме: номер, ID (синий), название (циан), и fullName (серый) если отличается
- Результаты с цветной подсветкой для лучшей читаемости
- В quiet режиме (
-q): только ID, по одному на строку (без цветов)
Пример вывода:
Found 3 test cases:
1. ID 12345 User login with valid credentials
└─ tests.auth.test_login.test_user_login_valid
2. ID 12389 User login with OAuth provider
└─ tests.auth.oauth.test_login_oauth
3. ID 12401 User login with 2FA enabled
└─ tests.auth.two_factor.test_login_2fa
Где:
12345,12389,12401— синий, жирный (ID)User login...— циан (название)tests.auth...— серый (fullName)
Примечание: Значение ID — это Allure ID для декоратора @allure.id("...") в коде тестов.
Команда find-orphaned (поиск устаревших тестов)
Находит потенциально осиротевшие тест-кейсы — тесты, которые давно не обновлялись и имеют похожие активные тесты (потенциальные дубликаты с новым ID).
Проблема: Когда в автотестах меняется название шагов или имя сценария, Allure генерирует новый ID. В БД остаётся старый тест, который больше не выполняется и не поддерживается.
Решение: Команда find-orphaned ищет такие тесты по двум критериям:
- Тест не обновлялся N дней (по умолчанию 30)
- Есть другие тесты с похожими названиями (similarity >= 0.75)
# Найти осиротевшие тесты (по умолчанию: неактивны 30+ дней + similarity >= 0.75)
allure_cli find-orphaned
# Только неактивные тесты (без проверки схожести)
allure_cli find-orphaned --days 60
# Только тесты с похожими названиями (без проверки неактивности)
allure_cli find-orphaned --similarity 0.8
# Оба критерия одновременно
allure_cli find-orphaned --days 60 --similarity 0.8
# Только ID (для скриптов)
allure_cli find-orphaned -q
# Интерактивное удаление найденных тестов
allure_cli find-orphaned --delete
Параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
--days |
Порог неактивности (дни). Если указан один, фильтрует только по дням | 30 (если не указан --similarity) |
--similarity |
Порог схожести названий (0.0-1.0). Если указан один, фильтрует только по схожести | 0.75 (если не указан --days) |
--no-normalize |
Отключить умную нормализацию названий (см. ниже) | false (нормализация включена) |
--no-color |
Отключить цветной вывод | false (цвета включены) |
--delete |
Интерактивное удаление найденных тестов | false |
-q, --quiet |
Вывести только ID | false |
Цветной вывод:
По умолчанию результаты выводятся с цветами для лучшей читаемости:
- 🔴 Красный — осиротевшие тесты (кандидаты на удаление)
- 🟢 Зелёный — высокая схожесть (≥0.9) или свежие тесты (<7 дней)
- 🟡 Жёлтый — средняя схожесть (0.75-0.9) или средний возраст (7-30 дней)
- 🔵 Синий — ID тестов
- 🟣 Пурпурный — заголовки секций
- ⚪ Серый — второстепенная информация
Цвета автоматически отключаются при:
- Перенаправлении вывода в файл
- Переменной окружения
NO_COLOR - Флаге
--no-color
# Отключить цвета
allure_cli find-orphaned --no-color
# Или через переменную окружения
NO_COLOR=1 allure_cli find-orphaned
Логика работы флагов:
- Без флагов: применяются оба критерия (
--days 30 --similarity 0.75) - Только
--days N: ищет тесты неактивные N+ дней (без проверки схожести) - Только
--similarity X: ищет тесты с похожими названиями (без проверки неактивности) - Оба флага: применяются оба критерия одновременно
Умная нормализация названий:
По умолчанию включена нормализация названий для более точного поиска дубликатов. Удаляется "шум":
- Даты:
2024-01-15,15/01/2024,20240115 - Временные метки:
14:30:45, Unix timestamps - Версии:
v1.2.3,version 2 - ID и номера:
test-123,[ID-456],#789, изолированные числа - Стоп-слова:
test,check,verify,should,when,then,given
Примеры:
Оригинал: "Test [TC-123] User login verification 2024-01-15"
Нормализованное: "user login"
Оригинал: "Check user login #456 v2.0"
Нормализованное: "user login"
Результат: similarity = 1.0 (идентичны после нормализации)
Чтобы отключить нормализацию (сравнивать названия как есть):
allure_cli find-orphaned --no-normalize
Пример вывода:
Searching for orphaned tests (inactive for 30+ days, similarity >= 0.75)...
Found 2 potentially orphaned test(s):
1. Test ID 12345 (inactive for 45 days)
Name: User login test
Similar tests found:
- ID 12389 (similarity: 0.92, inactive: 2 days)
User login test updated
- ID 12401 (similarity: 0.85, inactive: 0 days)
User login with OAuth test
2. Test ID 11234 (inactive for 67 days)
Name: Payment flow test
Similar tests found:
- ID 12500 (similarity: 0.88, inactive: 1 days)
Payment flow test refactored
Интерактивное удаление:
allure_cli find-orphaned --delete
Для каждого найденного теста будет предложено:
y— удалить тестn— пропуститьq— завершить
Авторизация
Используется схема из документации ТестОпс: API-токен обменивается на JWT через POST /api/uaa/oauth/token, далее запросы к API — с заголовком Authorization: Bearer <jwt>.
JWT кэшируется на диск (~/.cache/allure_cli/ или $XDG_CACHE_HOME/allure_cli/), чтобы не запрашивать новый токен при каждом вызове. При ответе 401 от API кэш сбрасывается и токен запрашивается заново автоматически.
Project details
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 allure_cli-0.2.1.tar.gz.
File metadata
- Download URL: allure_cli-0.2.1.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ecf20c82dbdece0351c56da29e8e4dd67e29c82e04c9b4821eb2cce70a83d99
|
|
| MD5 |
8a71da2818fdd17b3751e4bc58ff4008
|
|
| BLAKE2b-256 |
fcb4de711720e896688755432bdca2a8db54a7eb2e798cf697a7711d5b722db4
|
File details
Details for the file allure_cli-0.2.1-py3-none-any.whl.
File metadata
- Download URL: allure_cli-0.2.1-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b075c1de4098071eca85041f2ddd2d61927c50d6938d0822971b7295772040ec
|
|
| MD5 |
ccf022111e59e9d64912d2ecb1e05b43
|
|
| BLAKE2b-256 |
87888e5307b927cbae1de6c43f33b19c1011ec4912117ae7b3f3ff3b883eeae6
|