allure的Tag标记(allure.story、allure.feature、severity)

  执行测试用例时,有的时候我们希望能够更加灵活的指定执行某些测试用例,pytest支持我们通过使用marker装饰器@pytest.mark来实现这个需求,而allure也同样提供了三种类似的方法来实现这个需求。

allure的三种方式:

  • BDD(行为驱动开发)的风格标记:Epics、Features、Stories;
  • Severity标签;
  • 自定义标签;

BDD markers:

  allure提供的两个装饰器:@allure.feature和@allure.story,可以将我们的用例根据Feature和Story分类,通过将name使用epic_ 开头的前缀就能够指定Feature和Story属于哪一个epic。

举个栗子:

# file_name: test_allure_tag_BDD.py


import pytest
import allure


def test_without_any_annotations_that_wont_be_executed():
    """
    没有任何注解
    :return:
    """
    pass


@allure.story('epic_1')
def test_with_epic_1():
    """
    通过指定name为epic_前缀的方式来指定story属于哪一个epic
    :return:
    """
    pass


@allure.story('story_1')
def test_with_story_1():
    """
    指定该测试用例属于的story
    :return:
    """
    pass


@allure.story('story_2')
def test_with_story_2():
    """
    指定该测试用例属于的story
    :return:
    """
    pass


@allure.feature('feature_2')
@allure.story('story_2')
def test_with_story_2_and_feature_2():
    """
    指定该测试用例属于的feature和story
    :return:
    """
    pass


if __name__ == '__main__':
    pytest.main(['-s', 'test_allure_tag_BDD.py'])

可以通过下面命令行选项来指定想要执行的测试用例集,如果命令行选项的值有多个就用逗号分隔:

  • --allure-epics
  • --allure-features
  • --allure-stories

比如:

  上面截图中可以看到我们通过指定--allure-stories为story_1、story_2来指定运行用例,结果中可以看到我们只执行了用例属于story_1和story_2的测试用例。

  上面截图中,指定--allure-features为feature_2,--allure-stories为story_2,运行结果中能看到只运行了用例属于feature_2和story_2的测试用例。

Severity markers:

  使用@allure.severity来标识测试用例的严重等级,严重等级是allure.severity_level枚举中的一个。

用例等级:

allure划分用例等级为5个:

  • blocker:阻塞缺陷(功能未实现,无法下一步)
  • critical:严重缺陷(功能点缺失)
  • normal:一般缺陷(边界情况,格式错误)
  • minor:次要缺陷(界面错误与ui需求不符)
  • trivial:轻微缺陷(必须项无提示,或者提示不规范)

举个栗子:

file_name: test_allure_tag_severity.py


import pytest
import allure


def test_with_no_severity_label():
    """
    不定义任何severity标签
    :return:
    """
    pass


@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():
    """
    定义severity标签为TRIVIAL
    :return:
    """
    pass


@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():
    """
    定义severity标签为NORMAL
    :return:
    """
    pass


@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):
    """
    定义类的severity标签为NORMAL
    """

    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


if __name__ == '__main__':
    pytest.main(['-s', 'test_allure_tag_severity.py'])

severity装饰器可以用在函数、方法和类上面。

通过使用--allure-severities 命令行选项指定运行哪些测试用例,如果命令行选项的值有多个就用逗号分隔。

比如:

posted @ 2021-03-05 06:45  lwjnicole  阅读(1428)  评论(0编辑  收藏  举报