Полное руководство по интеграции Allure в Go-тесты: от установки до CI/CD [2024]
TL;DR: Это руководство содержит полную информацию по интеграции Allure в Go-проекты, включая настройку окружения, примеры тестов и CI/CD интеграцию.
Содержание
- Предварительные требования
- Установка и базовая настройка
- Настройка Allure TestOps
- Базовый пример интеграции
- Продвинутое использование
- CI/CD интеграция
- Решение проблем
- FAQ
1. Предварительные требования
Необходимые инструменты
- Go 1.16 или выше
- Git
- Доступ к Allure TestOps
Установка зависимостей
# Основная библиотека для работы с Allure
go get github.com/ozontech/allure-go
# Дополнительные зависимости
go get github.com/stretchr/testify
go get github.com/pkg/errors
Note: Обязательно проверьте версии в go.mod:
module your-project
go 1.21
require (
github.com/ozontech/allure-go v0.6.32
github.com/stretchr/testify v1.9.0
)
2. Установка и базовая настройка
Установка allurectl
# Для MacOS Intel
curl -Lo ./allurectl https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_darwin_amd64
# Для MacOS M1/M2
curl -Lo ./allurectl https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_darwin_arm64
# Для Linux
curl -Lo ./allurectl https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_amd64
chmod +x ./allurectl
sudo mv ./allurectl /usr/local/bin/allurectl
Настройка переменных окружения
# Обязательные переменные
export ALLURE_ENDPOINT="https://your-allure-server/api"
export ALLURE_TOKEN="your-token"
export ALLURE_PROJECT_ID="your-project-id"
# Опциональные переменные
export ALLURE_RESULTS_PATH="./allure-results"
export ALLURE_OUTPUT_FOLDER="./allure-report"
Warning: Никогда не храните токен напрямую в репозитории. Используйте переменные окружения или секреты CI/CD.
3. Настройка Allure TestOps
Создание проекта в Allure TestOps
Шаги настройки:
- Создайте новый проект
- Получите Project ID (понадобится для конфигурации)
- Создайте API token в настройках пользователя
Структура тест-кейсов
Рекомендуемая организация тестов:
- Создавайте эпики для крупных функциональных блоков
- Группируйте тест-кейсы по фичам
- Используйте теги для удобной фильтрации
4. Базовый пример интеграции
Минимальная структура теста
package tests
import (
"testing"
"github.com/ozontech/allure-go/pkg/framework/provider"
"github.com/ozontech/allure-go/pkg/framework/runner"
"github.com/stretchr/testify/require"
)
// Базовая структура теста с Allure
func Test_BasicExample(t *testing.T) {
// Создаем новый runner
r := runner.NewRunner(t, "Basic Test Suite")
// Определяем тест-кейс
r.NewTest("simple test", func(t provider.T) {
// Привязка к тест-кейсу в Allure TestOps
t.ID("12345")
// Добавляем метаданные для группировки в отчетах
t.Epic("API Tests")
t.Feature("Basic Operations")
t.Story("Simple Functionality")
// Описываем шаги теста
t.Step("Initialize test data", func() {
// Код инициализации
})
t.Step("Perform operation", func() {
// Основной код теста
})
t.Step("Verify results", func() {
require.True(t, true)
})
})
// Запускаем все тесты
r.RunTests()
}