栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytest的使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytest的使用

//在pytest测试框架中,要遵循以下约束:
测试文件名要符合test_*.py或*_test.py格式(例如test_min.py)
测试类要以Test开头,且不能带有init方法
在单个测试类中,可以包含一个或多个test_开头的函数

//命令行执行用例,mian里面参数详解
main()括号内可传入执行参数和插件参数,通过[]进行分割,[]内的多个参数通过‘逗号,’进行分割
运行目录及子包下的所有用例  pytest.main(['目录名'])
运行指定模块所有用例  pytest.main(['test_reg.py'])
运行指定模块指定类指定用例  pytest.main(['test_reg.py::TestClass::test_method'])  冒号分割

-q: 安静模式, 不输出环境信息
-v: 丰富信息模式, 输出更详细的用例执行信息 最高级别信息 — verbose
-s: 显示程序中的print/logging输出
-k: 来挑选要执行的测试项,后面接的名称可以为函数名称、类名称、文件名称、目录名称,支持模糊查询
-m: 运行打标签的用例,后面接标签名称
-x: 出现一个用例失败则停止执行测试用例
--resultlog=./log.txt 生成log
--junitxml=./log.xml 生成xml报告
--html=./log.html   生成html报告;上面方法生成的报告,css是独立的,可以把css样式合并到html里,再加一个参数--self-contained-html
--maxfail=num  表示用例失败总数等于num 时停止运行
--tb=line    错误信息在一行展示


//pytest断言主要使用Python原生断言方法,主要有以下几种:
== 内容和类型必须同时满足相等
in 实际结果包含预期结果
is 断言前后两个值相等

//初始化和清除环境
1、方法级别初始化、清除   setup 和 teardown
2、类级别初始化、清除  def setup_class(cls) 和 def teardown_class(cls)
3、模块级别初始化、清除    设置全局方法 def setup_module() 和 def teardown_module()

//注册标签名,只需要在项目根目录下创建一个pytest.ini文件

//fixture测试夹具详解
https://www.cnblogs.com/miki-peng/p/14736425.html

//allure生成报告
pytest -v test_cpm.py --alluredir=D:py_learn_pmlearn_pytestreports --clean-alluredir
--alluredir=./report/result     指定报告生成的路径;执行完命令后,report目录下生成一个result目录文件;result下只是一些测试报告的原始数据,还不能作为html报告打开。
--clean-alluredir      防止文件累积

在dos命令行执行下面的命令
allure generate D:/py_learn_pm/learn_pytest/reports -c -o D:/py_learn_pm/learn_pytest/reports/result
allure generate         -->     allure 生成报告的命令,固定写法
    ./result                -->     获取报告数据的 json 文件目录
    -c                      -->     每次执行后清空报告目录
    -o                      -->     输出报告命令
    ./report                -->     报告存放目录

//用例执行失败后重试
需要安装pytest-rerunfailures
命令行参数:--reruns n(重新运行次数),--reruns-delay m(等待运行秒数)
重新运行指定的测试用例,需要添加flaky装饰器   @pytest.mark.flaky(reruns=5) ,并在测试失败时自动重新运行,需要指定最大重新运行的次数

//重复执行用例
需要安装pytest-repeat
命令行执行:--count=5
如果要在代码中将某些测试用例标记为执行重复多次,可以使用 @pytest.mark.repeat(count)
--repeat-scope
命令行参数,可以覆盖默认的测试用例执行顺序,类似fixture的scope参数

function:默认,范围针对每个用例重复执行,再执行下一个用例
class:以class为用例集合单位,重复执行class里面的用例,再执行下一个
module:以模块为单位,重复执行模块里面的用例,再执行下一个
session:重复整个测试会话,即所有测试用例的执行一次,然后再执行第二次


//多线程或多进程执行测试用例
方式一:需要安装pytest-parallel
–workers=n *:多进程运行需要加此参数, n是进程数。默认为1,windows系统中只能为1
–tests-per-worker=n *:多线程运行, n是每个worker运行的最大并发线程数。默认为1
方式二:需要安装pytest-xdist
-n=3 指定进程数,如 -n=4 表示开启4个cpu进行执行测试用例
pytest-xdist 只支持多进程执行测试用例,不支持多线程执行

//控制用例的执行顺序
需要安装pytest-ordering
1. pytest 框架用例默认情况从上往下执行
2. 加上 @pytest.mark.run(order=3) 装饰器之后,执行顺序按照按照 order 值 从小往大执行
3. 先执行加了排序装饰器的,剩余按照默认顺序执行

//控制用例的依赖关系
需要安装pytest-dependency
设计测试用例的时候进可能不要让用例有顺序,不要让测试用例有依赖关系,如果无法做到,可以临时的用插件解决
pytest-dependency 要做的就是,让他们之间存在一种依赖关系:一旦用例A失败,那么用例B也不会执行

//断言1失败会继续执行后续代码断言2
https://blog.csdn.net/qq_36502272/article/details/106362652
需要安装pytest-assume
pytest.assume(1==4)  相当于 assert 1==4

//用例随机执行
需要安装pytest-random-order

//conftest.py + fixture
在conftest.py文件里面所有的方法在调用时都不需要导包
setup,teardown,setup_class,teardown_class,fixture优先级:
会话:fixture 的session级别的优先级最高

类:fixture的class级别最高
类:setup_class

函数:fixture 的function级别最高
函数:setup
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/972128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号