Skip to main content

CLI для Allure TestOps: получение Allure ID тест-кейса по названию

Project description

Allure CLI

CLI для работы с Allure TestOps. Основная задача — получение Allure ID тест-кейса по названию.

PyPI version Python License: MIT

Требования

  • 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 поддерживает четыре команды:

  1. search (по умолчанию) — поиск тест-кейсов по ID или названию
  2. find-orphaned — поиск осиротевших (устаревших) тестов
  3. delete — удаление тест-кейсов по ID из CSV файла
  4. 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 ищет такие тесты по двум критериям:

  1. Тест не обновлялся N дней (по умолчанию 30)
  2. Есть другие тесты с похожими названиями (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

allure_cli-0.2.4.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

allure_cli-0.2.4-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

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

Hashes for allure_cli-0.2.4.tar.gz
Algorithm Hash digest
SHA256 b00f1bff863c89183ede0f00d187527516e793aee5dd8adfd56838e1031d910f
MD5 54458c5de769f270509d9f5dfb4113d1
BLAKE2b-256 e189a20703d16fb36620103d277e135591baa320992c6759ee62163f8ff11831

See more details on using hashes here.

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

Hashes for allure_cli-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 37d1abb9332efec32fe927e168f78c0ba0435a1fd50819a560e7483c275c041f
MD5 2c97e92502ee66fe6f9439683e2ff2c2
BLAKE2b-256 b15e5dc7ad12958395a47f486140fcc09795ac377fcd55e07f714e8bc6bddbbb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page