• pytest框架-介绍、Mark(打标签)、执行标签命令运行用例、用例执行顺序、


    1、pytest介绍:基于unittest 之上的单元测试框架

      1.1、自动发现测试模块和测试用例;

        unitest 需要添加用例,(泰斯特楼贷)加载器加载测试用例

        pytest 只需要一条代码就可以

      1.2、断言使用 assert + 表达;

        unitest 定义了所有的 断言方式

        pytest  只需要使用一个关键字 assert + 表达式 就可以了,表达式为真则断言通过,表达式为假则断言失败

      1.3、pytest 可以设置测试会话级、模块级、类级、函数级的 fixtures;

      1.4、有丰富的插件库,目前在600个以上(框架库插件地址:http://plugincompat.herokuapp.com/)

     

    2、pytest 收集测试用例规则(按照:目录-文件-函数/类)

      2.1、默认从当前目录中搜集测试用例,即在那个目录下运行pytest  命令,则从那个目录当中搜索

        2.2、搜索规则:进入目录后,在按照搜索规则搜索用例

          2.2.1、符合命名规则    test_*.py   或者   *_test.py   的文件

          2.2.2、以   test_   开头的函数名

          2.3.3、以 Test  开头的测试类(没有   _init_  函数)当中,以  test_  开头的函数

    3.执行方式

    第一种:cmd  中执行  pytest 命令;先进入代码所在文件,然后执行 pytest 命令

    ==========   testsession starts ========:代表会话开始

    • python3.7:代表那个平台
    • pytest-5.2.1 :代表pytest版本
    • rootdir:代表搜索用例的地址

    第二种:同第一种方法:在 pycharm 控制台的   Terminal 功能,执行  pytest 命令

    命令:pytest
    
    pytest -h     :控制台查看命令行参数
    
    执行标签名 aaa 的测试用例
    pytest -m 标签名   :通过命令行 -m 过滤用例运行
    例如:pytest -m aaa
    
    pytest -m 标签名 -s -v   控制台搜索输出详情用例名,可以看到成功与失败提示
    例如:pytest -m aaa-s -v

    实例:

      

    第三种:pytest 的 main 函数 (同前两种方法)

    import pytest
    if __name__ == '__main__': pytest.main()

     

    3、pytest - Mark(打标签是为了筛选测试用例:冒烟、回归)

       3.1、注册标签名

        3.1.1、注册方式:创建  pytest.ini 文件,在文件中按如下形式添加标签名

    [pytest]
    markers=
        aaa:mao yan
        bbb
        ccc
        ddd
    
    # 标签名冒号后面可以添加注释信息必须是英文
    # 红色字段为固定模式,不能改变    

        3.1.2、在测试用例/ 测试类前面加上标签:@pytest.mark.已注册的标记名

    import pytest
    
    # 单个标记
    @pytest.mark.aaa
    def test_aaa():
        assert 100 == 100

        3.1.3、可以在一个用例上打多个标签,多次使用:@pytest.mark.已注册的标记名

    import pytest
    
    # 多个标记
    @pytest.mark.aaa
    @pytest.mark.ddd
    def test_bbb():
        assert 200 == 200

        3.1.3、在给类打标签,类里面的函数打标签

    # 给测试类打标签
    @pytest.mark.ddd
    class TestDemo:
        @pytest.mark.bbb
        def test_ccc(self):
            assert 300 == 300
    
        @pytest.mark.ccc
        def test_ddd(self):
            assert 400 == 400
    
        def test_0_eee(self):
            assert 500 == 500

      3.2、方式二:

        3.2.1、在测试类里,使用以下申明(测试类下,所有用例都被打上该标签)

    class TestDemo:
        # 单个标签
        pytestmark = pytest.mark.已注册标签名
        # 多个标签
        pytestmark = [pytest.mark.标签1, pytest.mark.标签1]

        3.2.2、在模块文件里(py文件下,所有测试函数和测试类里面的测试函数,都有会打上该标签)

    import pytest
    # 单个标签
    pytestmark = pytest.mark.已注册标签名
    # 多个标签
    pytestmark = [pytest.mark.标签1, pytest.mark.标签1]

     

    4、pytest用例执行顺序

      4.1、文件名称 按 ASCII 码排序

      4.2、文件内部按代码先后顺序排序

     大佬文档:https://www.cnblogs.com/Simple-Small/p/11077123.html

     

    *******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/,谢谢!!******* 

  • 相关阅读:
    单例模式的五种实现模式
    JAVA基础语法
    买卖股票的最佳时机 III
    leetcode 正则表达式 (动态规划)
    leetcode LRU缓存机制(list+unordered_map)详细解析
    leetcode 下一个排列(C++,STL源码解析)
    leetcode 编辑距离(动态规划)
    leetcode 字典序排数
    leetcode 字典序第K小数字
    leetcode 有效的括号(栈模拟)
  • 原文地址:https://www.cnblogs.com/shouhu/p/11653339.html
Copyright © 2020-2023  润新知