• pytest-基础


    一.使用pytest,默认的测试用例的规则以及基础应用

    1.模块名字必须已test_开头或者_test结尾

    2.测试类必须以Test开头,并且不能有init方法

    3.测试方法必须以test开头

    示例代码 test_001.py

    1. import pytest
    2. class TestCase:
    3. def test_case(self):
    4. print("执行测试用例")

    二、pytest测试用例的运行方式

    主函数模式:

            运行所有:pytest.main()

            运行指定的模块:pytest.main(['-vs',模块名.py])

            运行指定目录:mytest.main(['-vs','目录路径'])

            通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

                    ·类外的用例通过pytest.main(['-vs','模块路径::方法名'])

                    ·类内的用例:pytest.main('-vs','模块路径::类名::方法名')

            命令行模式:

                    ·运行所有:pytest

                    ·运行指定模块:pytest -vs 目录路径

                    ·通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数组成

                            ·类外的用例:pytest -vs 模块名::方法名

                            ·类内的用例:pytest -vs 模块路径::类名::方法名

            pytest.ini配置文件模式

                    pytest.ini是pytest单元测试框架的核心配置文件

                            位置:必须放在项目的根目录

                            编码格式,必须使用ANSI格式,可用notepad++等工具修改、

                            作用:改变pytest默认的行为

                            运行的规则:主函数模式和命令行模式都会读取这个配置文件

    配置文件实例:

    1. [pytest]
    2. #命令行参数,用空格分割
    3. addopts = -vs
    4. #测试用例文件,可以自己配置,...../testcase为上已成的testcase文件夹
    5. testpaths = ../testcase
    6. #配置测试搜索的模块文件名称
    7. pytest_files = test*.py
    8. #配置测试搜索的测试类名
    9. pytest_classes = Test*
    10. #配置测试搜索的测试函数名
    11. pytest_funtions = test

      以上为示例代码,用的时候需要把中文去掉,使用ANSI编码格式保存

    参数详解:

    ·-s:输出调试信息,包括print打印的信息

    ·-v:显示更多详细的信息

    ·-n:支持多线程或者分布式运行测试用例

            ·主函数模式:pytest.main('-vs','模块名.py','-n=2')--->调用两个线程执行

             命令行模式:pytest -vs 模块名.py -n 2

                    如果有5条用例用两个线程

                    线程一:1,3,5

                    线程二:2,4条

             ·--reruns:失败用例重跑        

                    主函数模式:pytest.main(['-vs','模块名.py','-n=2','--reruns=2'])

                    命令行模式:pytest -vs 模块名.py -n = 2 --reruns=2

                            失败后重跑两次

            ·-x:遇到报错测试用例则立即停止测试

            ·--mafail:遇到指定个数用例失败就停止测试

                    主函数模式:pytest.main(['-vs','模块名.py','--maxfail=2'])

                    命令行模式:pytest -vs 模块名.py --mafail=2

            · -k:根据测试用例名称内的部分字符串指定执行测试用例

                    主函数模式:pytest.main(['-vs','模块名.py','-k=xx'])

                    命令行模式:pytest -vs 模块名.py -k= 'xx'

            ·--html:生成原生html测试的报告

                    主函数模式:pytest.main(['-vs','模块名.py','--html=报告路径'])

                    命令模式:pytest -vs 模块名.py --html '报告路径'

            ·-vs:综合 -s,-v功能

    分布式

    使用pytest-xdist分布式测试执行测试用例

    参数-n auto :可以自动检测系统的CPU核数

    注意:使用auto等于利用了所有CPU来跑用例,此时CPU占用率会特别高。如果指定核数可将auto替换为具体的数字

    分布式执行在根目录下输入执行命令:pytest -s -v -n auto,
     

    三、pytest的测试执行循序

            ·unittest的执行顺序:默认按照ASCII表的顺序执行测试用例

            ·pytest的执行顺序:默认按照从上到下的顺序执行测试用例

                    改变pytest的默认执行循序:使用mark中装饰器

                    

    @pytest.mark,run(order=3)

    四、如何分组执行(冒烟,分模块执行,分接口或者ui执行)

            smoke:莫言用例,分布在各个模块里面

                    步骤一:在pytest.ini配置文件内添加配置信息:markers

                    

    1. [pytest]
    2. addopts = -vs
    3. testpaths = ../testcase
    4. python_files = test*.py
    5. python_classes = Test*
    6. python_functions = test
    7. markers =
    8. smoke:冒烟
    9. g1:组一
    10. g2:组二

                   步骤二:给测试函数添加装饰器@pytest.mark.smoke

                    步骤三:执行测试用例:

                            主函数模式:pytest.main(['-vs','模块名.py','-m=smoke'])

                            命令行模式:pytest -vs -m 'smoke'

                                    注意:此处的smoke不是固定的,可以自己定义标记名称

                                     如果想执行多个标记的用例:pytest -vs -m '标记1' or '标记2'

    五、pytest跳过测试用例

            无条件跳过:

                   添加装饰器:@pytest.mark,skip(reason = "跳过原因")

            有条件跳过:

                    添加装饰器:@pytest.mark.skipif(表达式,reason = '跳过原因')

                            注意:此处的表达式得到的应该是一个布尔类型,表达式成立则跳过,否则执行测试用例

    六、断言

    在pytest框架中使用assert进行断言

            示例代码

                    

    1. class TestCase:
    2. # 测试用例
    3. def test_case(self):
    4. print("执行测试用例")
    5. # 断言:语法assert 表达式
    6. assert 1 == 2

    注意:assert后面的表达式需要返回布尔值类型,True为测试用例通过,False为用例失败

                  

  • 相关阅读:
    目标检测算法——自动驾驶开源数据集汇总(附下载链接)
    Java泛型的那些事
    政务数据质量管理提升的5个最佳实践
    使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
    C/C++ vector模拟实现
    datax扩展vertica插件
    【附源码】计算机毕业设计JAVA忆居民宿管理
    核弹发射代码
    2023软件测试面试避坑指南
    vue和react的区别
  • 原文地址:https://blog.csdn.net/weixin_47347921/article/details/132843177