Подключение Allure-репортера к произвольному тест-фреймворку на python

в 10:35, , рубрики: allure first steps, allure homemade, allure python, Тестирование IT-систем

Автоматизация нуждается в человекочитаемых отчетах о тестировании — что тестировалось, какими тестовыми шагами, с каким результатом. Для этого существует система генерации отчетов Allure.

Allure поддерживается большинством известных тестовых фреймворков, а для неизвестных требует написания так называемого адаптера.

Как подключить Allure в любой произвольный фреймворк или не фреймворк вовсе?

Использование Allure состоит из двух независимых шагов:

  1. Генерация json-ов содержащих все действия теста, так называемые allure-results.

  2. Генерация отчета по собранным результатам (требует java8 и установки утилиты allure:https://bintray.com/qameta/generic/allure2). Этот пункт одинаков для всех типов фреймворков за счет того, что allure-results это достаточно универсальное описание тестов:

    allure generate /some_path_to/allure-results

    Написание полноценного адаптера для allure и интеграция его в произвольный фреймворк несколько трудоемко, поэтому воспользуемся минимально возможным набором действий, чтобы лишь проиллюстрировать идею. Код ниже — это python адаптация идей изложенных в докладе про allure-lifecycle на Java, оригинал.

Установим только ядро allure-репортера:

pip install allure-python-commons

Напишем простой тест генерирующий allure-results:

# -*- coding: utf-8 -*-
import allure_commons
from allure_commons.utils import now, uuid4
from allure_commons.reporter import AllureReporter
from allure_commons.logger import AllureFileLogger
from allure_commons.model2 import Status
from allure_commons.model2 import TestResult
from allure_commons.model2 import TestStepResult

def check_some_thing(some):
    print ("Some is %s" % some)
    return some

if __name__ == '__main__':
    print ("Start main")
    # Init allure
    allurelogdir = "reportsx"
    logger = AllureReporter()
    file_logger = AllureFileLogger(allurelogdir)
    allure_commons.plugin_manager.register(file_logger)
    # Start testcase
    case_uuid = uuid4()
    testcase = TestResult(uuid=case_uuid, fullName='Hello, Habr')
    logger.schedule_test(case_uuid, testcase)
    # TestStep
    allure_step = TestStepResult(name='Привет, habrateststepname (да здравствует русский язык)', start=now())
    current_step_uuid = uuid4()
    logger.start_step(None, current_step_uuid, allure_step)
    check_some_thing('something')  # origial procedure for testing
    logger.stop_step(current_step_uuid, stop=now(), status=Status.PASSED)

    testcase.status = Status.PASSED
    logger.close_test(case_uuid)

После запуска данный код сформирует результаты в папке "reports"

Как видно код по работе с тестовым шагом(start_step и stop_step) прекрасно подходит под паттерн декоратор и должeн быть им реализован.

Расставьте данные блоки кода по своему тест-фреймворку и соберите фейковые тесты с результатами ручного тестирования, выполните генерацию allure generate и вы получите готовое решение по унификации отчетов отдела.

Автор: irony_iron

Источник

Поделиться

* - обязательные к заполнению поля