• Pytest自动化测试


    Allure除了具有Pytest基本状态外,其他几乎所有功能也都支持。


    1、严重性

    如果你想对测试用例进行严重等级划分,可以使用 @allure.severity 装饰器,它可以应用于函数,方法或整个类。

    它以 allure.severity_level 枚举值作为参数,分别为:BLOCKER(中断),CRITICAL(严重),NORMAL(常规),MINOR(轻微),TRIVIAL(不重要)。

    示例:

    # test_sample.py
    import allure
    
    
    # 两数相加
    def add(x, y):
        return x + y
    
    # 测试类
    @allure.severity(allure.severity_level.TRIVIAL)
    class TestAdd:
    
        @allure.severity(allure.severity_level.MINOR)
        def test_first(self):
            assert add(3, 4) == 7
    
        @allure.severity(allure.severity_level.NORMAL)
        def test_second(self):
            assert add(-3, 4) == 1
    
        @allure.severity(allure.severity_level.CRITICAL)
        def test_three(self):
            assert add(3, -4) == -1
    
        @allure.severity(allure.severity_level.BLOCKER)
        def test_four(self):
            assert add(-3, -4) == -7
     

    运行:

     
    E:workspace-pyPytest>pytest test_sample.py --alluredir=report --clean-alluredir
    ========================================================================== test session starts ==========================================================================
    platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
    rootdir: E:workspace-pyPytest
    plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
    collected 4 items                                                                                                                                                        
    
    test_sample.py ....                                                                                                                                                [100%]
    
    =========================================================================== 4 passed in 0.06s ===========================================================================
     

    报告:

    你还可以通过 --allure-severities 选项指定严重等级运行,多个以逗号分隔。

     
    E:workspace-pyPytest>pytest test_sample.py --allure-severities normal,critical
    ========================================================================== test session starts ==========================================================================
    platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
    rootdir: E:workspace-pyPytest
    plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
    collected 4 items                                                                                                                                                        
    
    test_sample.py ..                                                                                                                                                  [100%]
    
    =========================================================================== 2 passed in 0.02s ===========================================================================
     

     


    2、功能

    如果你想对测试功能、测试场景进行行为描述,可以分别使用装饰器:@allure.feature 和 @allure.story 

    示例:

     
    # test_sample.py
    import allure
    
    # 两数相加
    def add(x, y):
        return x + y
    
    @allure.feature('测试类')
    class TestAdd:
    
        @allure.story('01测试两个正数相加')
        def test_first(self):
            assert add(3, 4) == 7
    
        @allure.story('02测试负数正数相加')
        def test_second(self):
            assert add(-3, 4) == 1
    
        @allure.story('03测试正数负数相加')
        def test_three(self):
            assert add(3, -4) == -1
    
        @allure.story('04测试两个负数相加')
        def test_four(self):
            assert add(-3, -4) == -7
     

    运行:

     
    E:workspace-pyPytest>pytest test_sample.py --alluredir=report --clean-alluredir
    ========================================================================== test session starts ==========================================================================
    platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
    rootdir: E:workspace-pyPytest
    plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
    collected 4 items                                                                                                                                                        
    
    test_sample.py ....                                                                                                                                                [100%]
    
    =========================================================================== 4 passed in 0.06s ===========================================================================
     

    报告:

    你也可以通过 --allure-features 和 --allure-stories 选择指定具体功能和故事运行,多个以逗号分隔。

     
    E:workspace-pyPytest>pytest test_sample.py --allure-stories 01测试两个正数相加
    ========================================================================== test session starts ==========================================================================
    platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0
    rootdir: E:workspace-pyPytest
    plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
    collected 4 items                                                                                                                                                        
    
    test_sample.py .                                                                                                                                                   [100%]
    
    =========================================================================== 1 passed in 0.02s ===========================================================================
     

     


    3、步骤

    如果你想对每个测试调用进行非常详细的逐步说明,可以通过 @allure.step 装饰器来实现(固件同样支持)。

    该装饰器会将方法或函数的调用与提供的参数一起添加到报表中,并且可以包含一条描述行,该行支持位置关键字参数。

    示例:

     
    # test_sample.py
    import pytest
    import allure
    
    @allure.step('两数相加:{0} + {y}')
    def add(x, y):
        r = x + y
        print_res(r)
        return r
    
    @allure.step
    def print_res(r):
        print('计算结果:', r)
    
    class TestLearning:
        data = [
            [3, 4, 7],
            [-3, 4, 1],
            [3, -4, -1],
            [-3, -4, -7],
        ]
        @pytest.mark.parametrize("data", data)
        def test_add(self, data):
            assert add(data[0], data[1]) == data[2]
     

    报告:

     


    4、标题

    如果你想让测试标题更具可读性,可以使用 @allure.title 装饰器,该装饰器支持参数的占位符并支持动态替换。

    示例:

     
    # test_sample.py
    import pytest
    import allure
    def add(x, y):
        return x + y
    class TestLearning:
        data = [
            [3, 4, 7],
            [-3, 4, 1],
            [3, -4, -1],
            [-3, -4, -7],
        ]
        @allure.title("测试用例-{data}")
        @pytest.mark.parametrize("data", data)
        def test_add(self, data):
            assert add(data[0], data[1]) == data[2]
     
    报告:

     


    5、描述

    如果你想添加测试的详细说明,可以通过添加测试方法描述信息,也可以使用装饰器 @allure.description 和 @allure.description_html 

    示例:

     
    # test_sample.py
    import allure
    
    # 被测功能
    def add(x, y):
        return x + y
    
    # 测试类
    class TestLearning:
    
        @allure.description('测试正数相加')
        def test_first(self):
            assert add(3, 4) == 7
    
        @allure.description_html('<h1> 测试负数相加 </h1>')
        def test_second(self):
            """你也可以在这里添加用例的描述信息,但是会被allure装饰器覆盖"""
            assert add(-3, -4) == -7
     

    报告:

     


    6、附件

    如果你想在报告中显示不同类型的附件,可以通过以下两种方式来实现:
    allure.attach(body, name, attachment_type, extension)
    allure.attach.file(source, name, attachment_type, extension)

    示例:

    import allure
    
    
    def test_multiple_attachments():
        allure.attach.file(r'C:UsersPublicPicturesSample PicturesKoala.jpg', attachment_type=allure.attachment_type.JPG)
        allure.attach('<head></head><body> 测试页面 </body>', 'Attach with HTML type', allure.attachment_type.HTML)

    报告:

     


    7、链接

    如果你想关联缺陷追踪系统或测试管理系统,你可以使用装饰器 @allure.link@allure.issue@allure.testcase

    示例:

     
    import allure
    
    @allure.link('http://www.baidu.com')
    def test_with_named_link():
        pass
    
    @allure.issue('101', '缺陷问题描述')
    def test_with_issue_link():
        pass
    
    @allure.testcase('http://this.testcase.com', '测试用例标题')
    def test_with_testcase_link():
        pass
     

    报告:

    注意:

    @allure.issue 将提供带有小错误图标的链接,该描述符将测试用例ID作为输入参数,以将其与提供的问题链接类型的链接模板一起使用。
    链接模板在 --allure-link-patternPytest 的配置选项中指定。链接模板和类型必须使用冒号指定:
    pytest test_sample.py --alluredir=report --allure-link-pattern=issue:http://www.mytesttracker.com/issue/{}

  • 相关阅读:
    今天封装了一下 gridview 在没有数据的时候显示表头 并且提示数据为空的方法
    动态绑定treeview的方法
    Android为拨号盘dialer定制声音DTMF Tones
    如何降低android应用程序的耗电量
    DTMF双音多频按键信号的定义
    ant 实现批量打包android应用
    android网络编程——使用Android中的网络连接
    Android Service被关闭后自动重启,解决被异常kill 服务
    android中阿拉伯文研究
    android网络编程——http get
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15145370.html
Copyright © 2020-2023  润新知