pytest框架

目录

1.安装或升级

2.三种启动方式

3.框架中用例执行的结果

4.命名规则

5.框架配置

6.框架标记--mark

7.数据驱动

8.夹具fixture

9.插件系统

10.断言

1.安装或升级

pip install pytest --安装

pip install pytest -U --升级到最新版本

2.三种启动方式

(1)命令行模式:在终端中输入'pytest'命令;

①运行指定目录:pytest [详细目录],或者使用pytest -k [目标目录名];

②运行指定文件:pytest [详细目录] [文件],或者使用pytest -k [目标文件名];

③运行指定函数:pytest -k [目标函数名];

(2)主函数模式:main方法,在项目的根目录下创建单独的run.py文件,然后将主函数代码放置在改文件中,从而控制全局的测试用例的执行

if name == 'main':

pytest.main(['-s', '-v', '-k', 'test_login_success'])

(3)读取pytest的配置文件--pytest.ini

①addopts:用于在运行测试时传递额外的命令行选项;

②testpaths:指定pytest在哪些文件中查找测试文件,圈定测试范围,可以定义一个或 者多个目录;

③python_files:用于指定测试文件匹配模式(可将框架文件默认的命名模式改掉);

④python_classes:用于指定测试类匹配模式(可将框架类默认的命名模式改掉);

⑤python_functions:用于指定测试函数匹配模式(可将框架函数默认的命名模式改掉)

⑥markers:用于注册自定义标记,配合9.2中测试用例执行顺序使用;

ps:默认情况下pytest.ini不能写中文注释;

3.框架中用例执行的结果

|----|---------|------|
| 缩写 | 单次 | 含义 |
| . | passed | 通过 |
| F | failed | 失败 |
| E | error | 出错 |
| s | skipped | 跳过 |
| X | xpassed | 预期成功 |
| x | xfailed | 预期失败 |

4.命名规则

模块名(文件名):'test_' 开头或者 '_test' 结尾;

类名:'Test' 开头,且不能出现__init__构造方法;

函数名:'test_' 开头函数或者方法 ;

5.框架配置

pytest可以通过 'pytest -h' 的命令获取框架配置的详细信息

①以 '-' 开头的:命令行参数;

-v:增加用例执行的详细程度;

-s:在用例执行过程中正常使用输入输出;

-x:快速退出,当遇到失败用例时停止执行;

②以小写字母开头的:ini配置文件;

③以大写字母开头的:环境变量;

6.框架标记--mark

(1)用户自定义标记

用户自定义标记只能实现用例筛选

步骤:

①注册:在pytest.ini文件中注册markers;

②标记:在用例中使用装饰器标记;

③筛选:pytest -m [标记名];

(2)框架内置标记

①skip:无条件跳过;

②skipif:有条件跳过;

③xfail:预期失败;

④parametrize:参数化;

⑤usefixtures:使用fixures;

7.数据驱动

@pytest.mark.parametrize()

8.夹具fixture

(1)夹具的定义:在用例执行之前或者执行之后,自动运行代码

①不带参数的前置夹具的定义和使用

②不带参数的前后置夹具的定义和使用

③带参数的前后置夹具的定义和使用

scope:控制fixture的作用范围,可选值:function,class,session,module,这个参 数可以不写,如果不写则默认为function;

autouse:用于指定是否自动应用此夹具,而无需再函数中显式调用,默认值为False;

params:用于参数化选项,它允许为fixture定义多个参数值,以便在测试中使用不同的参数组合;

name:为被夹具定义的函数取别名

ids:为夹具中参数化里的数据取别名

(2)如何创建夹具

①在函数的上面加上@pytest.fixture装饰器;

②添加yield关键字,yield之前的代码为前置,yield之后的代码为后置;

(3)使用@pytest.fixture和conftest.py结合使用实现一个全局的前后置应用

①conftest.py是单独存放夹具的文件,名称固定不可更改;

②可以在不同的目录里创建多个conftest.py文件,每个文件的作用域为对应目录以及子目录;

③使用conftest.py文件中的夹具时,无需import引入,系统会默认调用;

9.插件系统

(1)并发执行:pytest-xdist -n [并发数量]

(2)失败重跑:pytest-rerunfailures

(3)测试用例执行顺序:pytest-ordering

10.断言

(1)相等断言:assert 1 == 1;

(2)不相等断言:assert 1 != 2;

(3)真假断言:assert True;

(4)成员关系断言:assert 'a' in 'china';

(5)集合断言:assert set_a == set_b;

相关推荐
旦莫11 分钟前
Pytest教程:Pytest与主流测试框架对比
人工智能·python·pytest
数据大魔方21 分钟前
【期货量化实战】螺纹钢量化交易指南:品种特性与策略实战(TqSdk完整方案)
python·算法·github·程序员创富·期货程序化·期货量化·交易策略实战
旻璿gg38 分钟前
paddleocr、paddleocrvl、ppocrv5
python
清水白石00841 分钟前
手写超速 CSV 解析器:利用 multiprocessing 与 mmap 实现 10 倍 Pandas 加速
python·pandas
Corleo1 小时前
记录一次复杂的 ONNX 到 TensorRT 动态 Shape 转换排错过程
python·ai
shughui1 小时前
Python基础面试题:语言定位+数据类型+核心操作+算法实战(含代码实例)
开发语言·python·算法
No0d1es1 小时前
2025年12月电子学会青少年软件编程Python六级等级考试真题试卷
开发语言·python·青少年编程·等级考试·电子学会
Blossom.1181 小时前
Transformer架构优化实战:从MHA到MQA/GQA的显存革命
人工智能·python·深度学习·react.js·架构·aigc·transformer
溪海莘2 小时前
如何部署使用uv管理依赖的python项目 ?
开发语言·python·uv
我送炭你添花2 小时前
Python与串口:从基础到实际应用——以Pelco KBD300A模拟器项目为例
开发语言·python·自动化·运维开发