Anna: готовим отчет о тестировании API, чтобы все были довольны

от автора

Разрабатываем тестовый скрипт, запускам и получаем классный отчет с результатами

Всем привет. Как часто вам нужно разрабатывать сотни авто тестов и предоставлять заинтересованным лицам отчеты с результатами? Лично мне очень часто. В этом мне помогает Anna.

Зачем это нужно

Я работаю QA инженером в крупной IT компании. Мы предоставляем тестирование как сервис. К нам обращаются команды, которые разрабатывают свой продукт за автоматизацией ручных тестов. Как правило, это UI или API тесты. Многие не понимают, что такое автоматизация тестов и приходится каждый раз объяснять, что к чему. Самое главное в любом тестировании это результаты тестирования. Все будет отлично, если они представлены в удобном и понятном виде. Исторически сложилось, что мы используем для отчетов Allure Framework. Наши клиенты привыкли видеть результаты в таком виде.

Одно из окно отчета
Одно из окно отчета

Моя команда пишет тестовые скрипты на Python. Мы первая команда в нашей компании, которая внедрила данный язык в тестирование. Я всегда хотел делать больше и затрачивать на это как можно меньше времени. В Python отличные встроенные и пользовательские библиотеки, но они не удовлетворяли наши запросы в полной мере. Приходилось импортировать кучу библиотек, писать длинный код и тратить на написание много времени. Время разработки и поддержки — главные критерий, который я установил. Для этого была разработана Anna.

Как установить

Для установки выполнить следующую команду:

python -m pip install anna-api-test-framework

Как использовать

Для начала импортируем библиотеку

from anna import Actions, Report, Asserts

Для использования предоставляется три класса.

  • Actions — содержит методы для выполнения http запросов. Под капотом спрятана библиотека requests. Все данные о запросах и отчетах автоматически добавляются в отчет о тестировании.

action = Action(url=url) response = action.request(method=method)
Данные о запросе и ответе в отчете
Данные о запросе и ответе в отчете
  • Report — содержит методы для добавления необходимых данных в отчет: шаги, названия тестов, группировка тестов, ссылки, описание и т.п.

@Report.epic('Simple tests') @Report.story('Tests google') @Report.testcase('https://www.google.com', 'Google') @Report.link('https://www.google.com', 'Just another link') class TestExample:      @Report.title('Simple test google')     @Report.severity('CRITICAL')     def test_simple_request(self):         url = 'https://google.com'         method = 'GET'         want = 200          Report.description(url=url, method=method, other='other information')
  • Asserts — содержит методы для проверки условий тестов.

with Report.step('Checking response'):     Assert.compare(         variable_first=want,         comparison_sign='==',         variable_second=got,         text_error='Response status code is not equal to expected'     )

Как запустить тесты

Для запуска используем следующую команду:

python -m pytest --alluredir="./results"

Мы используем для своих тестов библиотеку pytest. Данной командой мы запускам все тесты из текущей директории и указываем куда сохранять данные с результатами тестов. В данном случае сохраняем все в директорию results

Как сформировать отчет

Для формирования и отображения отчета необходимо установить утилиту Allure.

Далее используем команду для формирования отчета из полученных тестовых данных в директории results:

allure generate "./results" -c -o "./report"

Данная команда формирует отчет в директорию report

Как открыть отчет

Выполняем следующую команду:

allure open "./report"

Команда запускает локальный сервер через который мы получаем доступ к отчету из директории report в своем браузере.

Сформированный отчет
Сформированный отчет

Данный отчет сформирован на основе следующего тестового скрипта:

from anna import Action, Report, Assert  # добавляем всю необходимую информацию для набора тестов, а также # группируем их @Report.epic('Simple tests') @Report.story('Tests google') @Report.testcase('https://www.google.com', 'Google') @Report.link('https://www.google.com', 'Jast another link') class TestExample:      # тестовый метод. Задаем ему имя и важность     @Report.title('Simple test google')     @Report.severity('CRITICAL')     def test_simple_request(self):         url = 'https://google.com'         method = 'GET'         want = 200         # добавляем описание в отчет со всей необходимой         # информацией         Report.description(url=url, method=method, other='other information')         # создаем новый объект класса Action         action = Action(url=url)         # выполняем запрос         response = action.request(method=method)         # получаем код ответа         got = response.status_code         # вставляем шаг теста в отчет         with Report.step('Checking response'):             # проверяем код ответа             Assert.compare(                 variable_first=want,                 comparison_sign='==',                 variable_second=got,                 text_error='Response status code is not equal to expected'             )

Итог

Данный инструмент ускоряет разработку тестовых скриптов для API тестов и стандартизирует вид тестового отчета на всех проектах. Наши тесты гоняются в CI/CD (Jenkins) и запускаются автоматически по событиям. Остается только смотреть отчеты и поддерживать тесты в актуальном состоянии.

Ссылка на репозиторий github

P.S.

Спасибо за ваше внимание. Буду рад услышать ваши мнения, предложения и замечания


ссылка на оригинал статьи https://habr.com/ru/post/659729/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *