一、pytest测试用例规则
1. 模块名必须以test_
开头或_test
结尾
2. 测试类必须以Test
开头且不能有init
方法
3. 测试方法必须以test
开头
二、pytest测试用例运行方式
1、主函数模式
a) 运行所有:pytest.main()
b) 指定模块/目录:pytest.main(['-s', '指定模块名.py'])
【注:如果指定模块为package包下所有文件,则传package路径即可】
c)通过nodeid
指定用例运行:nodeid
由模块名、分隔符、类名、方法名、函数名组成。例如:
pytest.main(['-s', '路径/指定模块名.py::类名::方法名'])
2、命令行模式
a) 运行所有:pytest
b) 指定模块/目录:pytest -s 指定模块名.py
【注:如果指定模块为package包下所有文件,则传package路径即可】
3、读取pytest.ini
配置文件【**实际中需要用到,最重要**】
pytest.ini
这个文件是pytest单元测试框架的配置文件。
- 位置:一般放在项目根目录,且名字不能改
- 编码:必须是ANSI,可以用notepad 修改编码格式
- 作用:可以改变pytest默认的行为(比如你不想用例以test开头,那就来这里改)
- 运行规则:不管用主函数还是命令行模式运行,都会读取配置文件。
- 写法:
根目录下新建pytest.ini
文件
【注:方便大家理解,使用时建议把中文注释删掉】
执行测试用例时如果提示
即编码错误。可以通过notepad 打开这个文件,然后修改编码为ANSI(建议把中文注释删掉)
三、参数详解(以列表list
方式传参)
-s
输出用例调试信息包括print
的内容-v
除了输出调试信息,还会显示类名用例方法名-vs
-v和-s结合到一起-n
支持多线程或分布式运行;例:pytest.main(['-vs', 'testcase/', '-n=2'])
或 pytest -vs ./testcase -n 2--reruns
失败后重跑,需要安装pytest-rerunfailures
库,语法:pytest.main(['-vs', 'testcase/', '--reruns=2'])
用例执行失败时,会重复执行2次。-x
只要有一个用例报错,则用例停止。语法: pytest.main(['-vs', 'testcase/', '-x'])- --maxfail最多报错后停止。上面-x是一个报错就停止,这个是最多能接受多少个用例报错。语法:--maxfail=2
- -k 根据测试用例的部分字符串指定测试用例。语法: pytest.main(['-vs', 'testcase/', '-k', '用例名中的字符'])
三、pytest执行测试用例的顺序
unittest:根据ASCII的大小来决定执行顺序
pytest:默认从上到下。如果不想从上到下执行,则可以通过加标记的方式:
@pytest.mark.run(order=n)