Маркеры(mark)

Иногда вы хотите быть гибкими с тестами, которые вы хотите выполнить. Pytest позволяет это сделать с помощью декоратора маркеров @pytest.mark( Pytest docs ).

import pytest


@pytest.mark.webtest
def test_send_http():
    pass  # perform some webtest test for your app

Allure позволяет помечать ваши тесты аналогичным образом с помощью 3-х типов декораторов маркировки, которые позволяют структурировать представление вашего отчета:

  1. Маркеры в стиле BDD, обозначающие эпики, особенности и истории.

  2. Severity маркеры

  3. Custom маркеры

Маркеры BDD

Есть два декоратора: @allure.featureи @allure.storyдля маркировки ваших тестов в соответствии с разбивкой Feature/Story, характерной для вашего проекта ( для получения дополнительной информации см. статью BDD в Википедии ). Чтобы отметить, что какой-либо объект или история относятся к эпопее, используйте имя, начинающееся с epic_префикса.

тесты.py

import allure


def test_without_any_annotations_that_wont_be_executed():
    pass


@allure.story('epic_1')
def test_with_epic_1():
    pass


@allure.story('story_1')
def test_with_story_1():
    pass

@allure.story('story_2')
def test_with_story_2():
    pass


@allure.feature('feature_2')
@allure.story('story_2')
def test_with_story_2_and_feature_2():
    pass

Вы можете использовать следующие параметры командной строки, чтобы указать различные наборы тестов для выполнения, передавая список значений, разделенных запятыми:

  1. --allure-epics

  2. --allure-features

  3. --allure-stories

Например:

$ pytest tests.py --allure-stories story_1,story_2

collected 5 items

tests.py ...                                                                [100%]

============================== 3 passed in 0.01 seconds ==========================
$ pytest tests.py --allure-features feature2 --allure-stories story2

collected 5 items

tests.py ...                                                                [100%]

=============================== 2 passed in 0.01 seconds =========================

Маркеры серьезности(Severity)

Чтобы отметить ваши тесты по уровню серьезности, вы можете использовать @allure.severityдекоратор. Он принимает allure.severity_levelзначение перечисления в качестве аргумента.

import allure


def test_with_no_severity_label():
    pass


@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():
    pass


@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():
    pass


@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):

    def test_inside_the_normal_severity_test_class(self):
        pass

    @allure.severity(allure.severity_level.CRITICAL)
    def test_inside_the_normal_severity_test_class_with_overriding_critical_severity(self):
        pass

Декоратор серьезности можно применять к функциям, методам или целым классам.

При использовании --allure-severitiesпараметра командной строки со списком уровней серьезности, разделенных запятыми, будут запускаться только тесты с соответствующими уровнями серьезности.

$ pytest tests.py --allure-severities normal,critical

collected 5 items

bdd_annotations_demo/test_severity_labels.py ...                           [100%]

================================ 3 passed in 0.01 seconds =======================

Last updated