Pytest进阶使用( 二 )


  • 实现参数化
  • pytest.ini文件
    • pytest.ini是pytest的配置文件
    • 可以修改pytest的默认行为
    • 不能使用中文符号,包括汉字,空格,引号,冒号等
    作用:
    • 修改用例的命名规则
    • 配置日志格式,比代码配置方便很多
    • 添加标签,防止运行过程报警告错误
    • 指定执行目录
    • 排除搜索目录
    改变pytest运行规则[pytest];执行check_开头的所有文件python_files = check_* test_*;执行所有的以Test和Check开头的类python_classes = Test* Check*;执行所有以test_和check_开头的方法python_functions = check_* test_*
    • 注意:win系统的pytest.ini文件不能写中文,注释也不行
    pytest配置-添加默认参数
    addopts = -v -s --alluredir=./results
    指定/忽略执行目录;设置执行得路径;testpaths = bilibili baidu;忽略某些文件夹/目录norecursedirs = result logs datas test_demo*插件开发
    • pytest插件分类
      • 外部插件:pip install 安装的插件
      • 本地插件:pytest自动模块发现机制(conftest.py存放的)
      • 内置插件:代码内部的_pytest目录加载(hook函数)
    官网:https://pypi.org/
    常用插件
    Pytest进阶使用

    文章插图
    每一种测试框架收集测试用例的顺序是不一样的
    pytest执行顺序控制
    • 场景:
    对于集成测试,经常会有上下文依赖关系的测试用例 。如十个步骤,拆分成十个case,这时候能知道到底执行到哪步报错 。
    用例默认执行顺序:自上而下执行
    • 解决:
    可以通过setup,teardown和fixture来解决,也可以使用pytest-ordering插件来解决
    • 安装:pip install pytest-ordering
    • 用法:@pytest.mark.run(order=2)
    • 注意:多个插件装饰器(>2)的时候,有可能会发生冲突
    并行与分布式并发执行(xdist)场景1:
    • 测试用例1000条,一个用例执行1分钟,一个测试人员需要1000分钟,通常我们会用人力成本换取时间成本,加几个人一起执行,时间就会缩短 。这就是一种分布式场景 。
    场景2:
    • 假设有个报名系统,对报名总数进行统计,数据同时进行修改操作的时候有可能出现问题,需要模拟这个场景,需要多用户并发请求数据
    解决:
    • 使用分布式并发执行测试用例,分布式插件:pytest-xdist
    • 安装:pip install pytest-xdist
    • 注意:用例多的时候效果明显,多进程并发执行,同时支持allure
    hook函数1. 介绍
    • 是个函数,在系统消息触发时被系统调用
    • 自动触发机制
    • Hook函数的名称是确定的
    • pytest有非常多的hook函数
    • 使用时直接编写函数体
    • 执行是有先后顺序的
    • 可以在不同阶段实现不同的功能
    pytest执行过程
    Pytest进阶使用

    文章插图
    执行顺序:
    • 介绍:https://ceshiren.com/t/topic/8807
    • 简洁版:

    Pytest进阶使用

    文章插图
    pytest编写插件1-修改默认编码pytest_collection_modifyitems收集上来的测试用例实现定制化功能
    解决问题: