zoukankan      html  css  js  c++  java
  • 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 命令行选项指定运行哪些测试用例,如果命令行选项的值有多个就用逗号分隔。

    比如:

  • 相关阅读:
    Cocos2d Box2D之动态刚体
    Cocos2d Box2D之简介
    Cocos2d-x之物理引擎
    Cocos2d-x之UI控件简介
    Cocos2d-x之数据的处理
    My First Django Project (3)
    My First Django Project (2)
    My First Django Project
    Python 学习笔记
    利用python scrapy 框架抓取豆瓣小组数据
  • 原文地址:https://www.cnblogs.com/lwjnicole/p/14484039.html
Copyright © 2011-2022 走看看