装饰器的含义:装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。(为现有功能添加额外功能,但不影响现有功能,且方便复用)
装饰器的使用场景:插入日志、性能测试、事务处理、缓存、权限校验等场景
pytest装饰器包含:fixture、parametrize、mark、rerunfailure
- fixture装饰器
fixture优势:
- 命名方式灵活,不局限于setup和teardown这几个命名
- conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置
- scope="module" 可以实现多个.py跨文件共享前置, 每一个.py文件调用一次
- scope="session" 以实现多个.py跨文件使用一个session来完成多个用例
fixture装饰器可决定在哪个位置前运行,可控制作用范围:session>module>class>function
-function:每一个函数或方法运行前都会调用
-class:每一个类运行前调用一次
-module:每一个.py文件调用一次,可以跨.py文件调用
- fixture用法:@pytest.fixture(scope,params,autouse,ids,name)
- 函数或类里面方法直接传fixture的函数参数名称
2.使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例
3.叠加usefixtures
如果一个方法或者一个class用例想要同时调用多个fixture,可以使用@pytest.mark.usefixture()进行叠加。注意叠加顺序,先执行的放底层,后执行的放上层。
2.Mark装饰器之 parametrize
pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化。
3.Mark装饰器之order--执行顺序
1、控制用例执行顺序的方法2、在需要调整用例执行顺序的函数(或方法)前增加,如@pytest.mark.run(order=x),x表示数字
3、执行顺序,由小到大、由正到负、未标记的在正数后、负数前执行
顺序为:1,2,3,无标记,-3,-2,-1
![](/i/l/?n=22&i=blog/2550843/202208/2550843-20220824163702460-989601052.png)
4、rerunfailure--失败重跑
1、失败重跑机制
2、安装pytest-rerunfailure
在设置文件pytest.ini中添加命令
reruns = 重跑次数
addopts= --reruns =10
5.skip--跳过测试
![](/i/l/?n=22&i=blog/2550843/202208/2550843-20220824164332197-1265720973.png)
标签:py,fixture,mark,用例,pytest,装饰 From: https://www.cnblogs.com/chloe1/p/16619689.html