[TOC]
# **实战**
## 一、**fixture方法(替换setup)**
1、添加装饰器@pytest.fixture()变成装饰器
![](https://img.kancloud.cn/16/d6/16d6a303d657aa6743faa28a79205d6d_250x98.png)
2、用法一:在测试用例中传入方法名,即可调用
![](https://img.kancloud.cn/2d/10/2d101d7985cd4247ec0bb7866380628a_319x106.png)
3、用法二:使用装饰器方法调用(好处是不用动到里面的参数)
![](https://img.kancloud.cn/e8/55/e855e30844da6c19e0dc5cf72b27f91a_336x103.png)
## 二、**yield方法(可以激活fixture的,teardown功能)**
1、Yield返回值
![](https://img.kancloud.cn/85/b7/85b7081cd20b2b2c246617f682929ff2_355x134.png)
2、获取fixture方法的返回值
![](https://img.kancloud.cn/38/96/38963ef44d2564dec9a1ab0734a2d9d2_430x96.png)
## 三、**fixture作用域**
1、function函数或者方法界别都会被调用
每一个测试用例都会调用
![](https://img.kancloud.cn/58/bf/58bfefc77600da57520bceda448693a0_280x109.png)
2、Class类级别调用一次
只在class前后执行一次
![](https://img.kancloud.cn/c6/9b/c69b31ca58099b524270fed748ee8ea1_279x111.png)
3、Module模块级别调用一次
在整个\*.py文件中只调用一次
![](https://img.kancloud.cn/f6/c3/f6c3bbd99f90d74d3ff73cd4a62a35d8_296x110.png)
4、Session是多个文件调用一次
## 四、**conftest.py用法**
1、conftest下的fixture方法,其他同级文件可以直接调用
2、Params参数化调用
如果有yield方法,就不需要return调用参数
![](https://img.kancloud.cn/f5/e6/f5e677eb1a4bed208f4c2ec3028a9025_343x167.png)
## 五、**pytest配置文件**
### **自定义mark标签名**
1、写在pytest.ini文件中
![](https://img.kancloud.cn/ac/29/ac2970a380c8866104cc7dfb53119598_188x139.png)
2、Pytest的主配置文件,一般放在项目工程的根目录
3、指定pytest的运行方式
4、不能使用任何中文符号
5、可以给测试用例打上标签,指定执行特定标签的用例
![](https://img.kancloud.cn/6d/24/6d24e1b918ab1c28fe9b854301ae746c_286x91.png)
6、执行方法
![](https://img.kancloud.cn/56/e0/56e00d66012fcf05ebd0f53464dabffe_400x34.png)
### **Addopts运行时参数(可添加多个命令行参数,空格分隔,所有参数与命令行一致)**
1、写在pytest.ini文件中
执行pytest \*\_.py命令时,自动带入
多个参数时,空格写在后面即可
![](https://img.kancloud.cn/2e/aa/2eaaa7a3d462e124bda903e08fb7ab16_135x33.png)
2、自定义测试文件的命名规则,python\_files
在pytest.ini文件中,注释用“;”
![](https://img.kancloud.cn/3d/21/3d21127985326f0084ea2c189980919d_292x49.png)
3、自定义测试类的命名规则,python\_classes
![](https://img.kancloud.cn/c6/ab/c6ab200a349d2ca0c962ed601f016a37_272x47.png)
4、自定义测试方法的命名规则,python\_functions
![](https://img.kancloud.cn/bc/a0/bca0f9937b5efe0968b4aaa2dafabb36_281x49.png)
5、指定特定路径运行 testpaths = baidu
![](https://img.kancloud.cn/4d/63/4d63d7c5f7b70a38595a42fd7c00ccc8_242x50.png)
6、忽略路径 norecursedirs 用例较多时,可以提升运行效率
![](https://img.kancloud.cn/e6/57/e6576ad4255465e24cc187fe0776c4c9_330x52.png)
### **Pytest插件**
1、失败重跑
指定重跑次数
![](https://img.kancloud.cn/f5/54/f554d7c8c932b8b0866153e2dca4b98e_491x28.png)
指定重跑间隔
![](https://img.kancloud.cn/44/c3/44c3ec7a0ae5ac0fddeecf3ad783b57e_487x27.png)
也可以通过装饰器的方式
![](https://img.kancloud.cn/b2/26/b2265c1ec9b70e983861634c1edd0d7a_368x86.png)
2、pytest-assume列出失败的用例
安装pytest-assume
![](https://img.kancloud.cn/6f/30/6f30620e2a263ae89ba9da5383cd052c_273x113.png)
1、pytest-ordering控制测试用例的执行顺序(建议测试用例不要有顺序,不要有依赖)
![](https://img.kancloud.cn/11/13/1113d63c5697325e964d8ba63e339c09_243x125.png)
![](https://img.kancloud.cn/88/75/8875c10f4b447b60a8615a17b666e692_263x73.png)
2、pytest-xdist多线程执行测试用例
安装
![](https://img.kancloud.cn/37/07/370775fafce14cd4543e8277eb21b67d_257x62.png)
\-n参数3(线程数)
![](https://img.kancloud.cn/73/82/73820310f9cf187cf71ec3ecb3022389_327x30.png)