想写很久,一直懒得动笔,且边学边写吧。。。
目录
1.了解pytest框架
它是一个单元测试框架,比unittest更灵活。
- 可以与requests相结合可以组成接口自动化,与selenium/appnium结合也可以做web自动化。
- 可以和allure结合生成非诚美观的测试报告;
- 可以和Jenkins持续集成;
- 非常强大的插件:pytest、pytest-html(出报告)、pytest-xdist(多并发)、pytest-ordering(改顺序)、pytest-returnfailures(重跑)
2.安装pytest,以及相关插件
2.1安装pytest
pip install -U pytest验证是否安装成功
pytest --version # 会展示当前已安装版本2.2安装插件
1.使用虚拟环境(也是针对此项目,局部安装)安装。

2.使用dos命令安装全局的环境
3.pytest默认使用规则
1.模块名必须test_*.py格式或*_test.py格式;
2.测试类必须以Test开头,并且不能有init方法;
3.测试方法必须是以test开头;
4.运行规则
1.使用主函数来运行
1)运行所有
2)运行指定的文件
if __name__ == '__main__':
pytest.main(['-vs', 'test_ll.py'])#运行test_ll这个用例。其中-V是代表更详细的显示执行的内容。从用例名、类、函数都显示,-s表示输出调试信息,包括print打印的信息3)运行指定目录
if __name__ == '__main__':
pytest.main(['-vs', './目录名'])#例如./testcase
#运行test_ll这个用例。其中-V是代表更详细的显示执行的内容。从用例名、类、函数都显示,-s表示输出调试信息,包括print打印的信息4)运行指定模块指定类指定用例
pytest.main(['test_reg.py::TestClass::test_method']) 冒号分割
2.使用命令行来运行
1)运行所有
或者具体的文件名
pytest 文件路径/测试文件名
例如:pytest ./test_111.py2)运行指定的文件
pytest -vs test_ll.py
3)运行指定的目录
pytest -vs ./目录名
4)运行指定模块指定类指定用例
pytest -vs test_reg.py::TestClass::test_method 冒号分割
3.使用pytest.ini配置文件运行
这个配置文件是核心配置文件,配置一些参数、路径啥的,配置好之后又,不管是采用3、4步骤中的哪一种运行都会读取这个文件;
- 位置:一般在项目的根目录中;
- 编码:必须是ANSI,编码不正确会报错,比如说出现一些中文啥的,可以通过notepad进行格式转换;
- 作用:改变pytest默认的行为;
[pytest]
addpots = -vs --html ./report/report.html #生成一个报告
testpaths = ./testcase #要执行的目录的路径
python_files=test_*.py #要执行的文件,这个是默认的执行规则,通过这个配置可进行修改,比如文件叫做aaa_*py,则改成aaa_*就可
python_functions=test #要执行的函数的规则,同样也可进行修改
markers= #标记要执行的用例。执行的时候输入 pytest -m "smoke"即执行冒烟的,多个可用or进行组合执行
smoke:冒烟
xx:
xx:5.运行参数详解
-reruns=xxx:失败用例重跑
-q: 安静模式, 不输出环境信息
-v: 丰富信息模式, 输出更详细的用例执行信息
-s: 显示程序中的print/logging输出。输入调试信息
-vs:一起使用
-n:支持多线程或分布式运行测试用例;例如:pytest -vs ./testcase/test_111.py -n 2(2个线程一起执行)
-x:表示只要一个用例报错,那么测试停止
-maxfail=2:出现2个用例失败就停止
-k:根据测试用例的部分字符串指定测试用例;例如:pytest -vs ./testcase -k "ao";,运行包含ao的测试用例
6.跳过测试用例
1)有条件跳过
@pytest.mark.skipif(age>=16,reason="")
2)无条件跳过
@pytest.mark.skipif(reason="")
版权声明:本文为weixin_37018468原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。