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— поиск осиротевших (устаревших) тестовdelete— удаление тест-кейсов по ID из CSV файлаcreate— создание новых тест-кейсов из CSV или JSON файла
Справка:
# Общая справка
allure-cli
allure-cli --help
# Справка по команде search
allure-cli search
allure-cli search --help
# Справка по команде find-orphaned
allure-cli find-orphaned --help
# Справка по команде delete
allure-cli delete --help
# Справка по команде create
allure-cli create --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
Команда delete (удаление тестов)
Удаляет тест-кейсы по ID из CSV файла. Поддерживает форматы CSV с разделителями ',' или ';'.
Пример CSV файла:
id,name
12345,Test case 1
12346,Test case 2
Использование:
# Удалить тест-кейсы из CSV файла
allure-cli delete --file test_cases.csv
# Удалить тест-кейсы без подтверждения (опасно!)
allure-cli delete --file test_cases.csv --yes
# Удалить тест-кейсы и показать подробный вывод
allure-cli delete --file test_cases.csv --verbose
# Удалить тест-кейсы без получения их деталей (быстрее)
allure-cli delete --file test_cases.csv --no-fetch
Параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
--file |
Путь к CSV файлу с ID тестов | Обязательный |
--yes |
Пропустить подтверждение удаления | false |
--verbose |
Показать подробный вывод | false |
--no-fetch |
Не получать детали тестов перед удалением | false |
--no-color |
Отключить цветной вывод | false |
Интерактивное подтверждение: Команда по умолчанию запрашивает подтверждение перед удалением каждого теста:
y— удалить тестn— пропуститьq— завершить
Пример вывода:
Found 2 test case(s) in CSV file:
1. ID 12345 - Test case 1
2. ID 12346 - Test case 2
Delete these test cases? [y/N]: y
Deleting test cases...
[1/2] Test case 12345: deleted
[2/2] Test case 12346: deleted
Successfully deleted 2 test case(s)
Команда create (создание тестов)
Создает новые тест-кейсы из CSV или JSON файла.
Пример CSV файла:
name,description,tags
"New test case 1","Description for test case 1","tag1;tag2"
"New test case 2","Description for test case 2","tag3"
Пример JSON файла:
[
{
"name": "New test case 1",
"description": "Description for test case 1",
"tags": ["tag1", "tag2"]
},
{
"name": "New test case 2",
"description": "Description for test case 2",
"tags": ["tag3"]
}
]
Использование:
# Создать тест-кейсы из CSV файла
allure-cli create --file test_cases.csv
# Создать тест-кейсы из JSON файла
allure-cli create --file test_cases.json
# Создать тест-кейсы с дополнительными тегами
allure-cli create --file test_cases.csv --tag "new" --tag "automated"
# Создать тест-кейсы и показать подробный вывод
allure-cli create --file test_cases.csv --verbose
Параметры:
| Параметр | Описание | По умолчанию |
|---|---|---|
--file |
Путь к CSV или JSON файлу | Обязательный |
--tag |
Дополнительные теги для всех тестов | [] |
--verbose |
Показать подробный вывод | false |
--no-color |
Отключить цветной вывод | false |
Интерактивный процесс: Команда показывает прогресс создания каждого теста:
✓— успешно создан✗— ошибка при создании
Пример вывода:
Creating test cases from test_cases.csv...
[1/2] New test case 1: created (ID: 12347)
[2/2] New test case 2: created (ID: 12348)
Successfully created 2 test case(s)
Логика работы флагов:
- Без флагов: применяются оба критерия (
--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 кэш сбрасывается и токен запрашивается заново автоматически.
-e
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.4.tar.gz.
File metadata
- Download URL: allure_cli-0.2.4.tar.gz
- Upload date:
- Size: 24.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b00f1bff863c89183ede0f00d187527516e793aee5dd8adfd56838e1031d910f
|
|
| MD5 |
54458c5de769f270509d9f5dfb4113d1
|
|
| BLAKE2b-256 |
e189a20703d16fb36620103d277e135591baa320992c6759ee62163f8ff11831
|
File details
Details for the file allure_cli-0.2.4-py3-none-any.whl.
File metadata
- Download URL: allure_cli-0.2.4-py3-none-any.whl
- Upload date:
- Size: 20.5 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 |
37d1abb9332efec32fe927e168f78c0ba0435a1fd50819a560e7483c275c041f
|
|
| MD5 |
2c97e92502ee66fe6f9439683e2ff2c2
|
|
| BLAKE2b-256 |
b15e5dc7ad12958395a47f486140fcc09795ac377fcd55e07f714e8bc6bddbbb
|