Python Pytest单元测试框架
pytest是目前公司使用的主流的单元测试框架,其简单灵活,容易上手,而且支持的插件上千种,功能极其强大。
一、pytest安装
pytest的安装有两种方法,第一种方法是命令行输入pip install pytest(Pycharm的Terminal命令行或者Window系统cmd进入命令行);第二种方法是File >> Settings >> Project >> Project Interpreter >> 右侧+ >> 搜索pytest >> Install Package(注意:一定不要勾选Install to user's site packages directory)
二、pytest测试用例的编写
①测试用例模块必须是以test_开头(test_*.py)或者以_test结尾(*_test.py)的py文件,同一个项目中最好统一,建议使用test_开头;
②测试函数必须以test_开头;
③测试用例如果写在类下面,类名称以Test开头。
换言之,
pytest搜集测试用例遵循以下规则:
①命名规则符合test_*.py或*_test.py文件下的以test_开头的函数;
②以Test开头命名的类下的以test_开头的方法。
三、pytest 收集用例
一定要在指定的目录下运行pytest,pytest收集用例有以下几种途径:
1、命令行运行,收集指定目录下的所有用例:打开terminal终端,进入指定目录,输入pytest,如:
2、命令行运行,收集指定模块下的用例:打开terminal终端,进入指定目录,输入pytest + 模块名称,如:
3、文件内(代码最后的顶格空白行)右击"Run pytest in",收集指定模块下的用例:
第一步,设置默认的测试运行器为pytest,File >> Setting >> Tools >> Python Integrated Tools >> Testing设置Default test runner为pytest;
第二步,点击菜单栏Run,选择Run并点击,再选择pytest in(后续可以直接文件内右击选择Run pytest in...,如果未出现,重启Pycharm )。若要将右击设回默认的Run,点击菜单栏,选择Run并点击,再选择当前文件名,重启pycharm即可。
4、通过程序pytest.main()方法来收集并运行用例,在模块中导入pytest,运行pytest.main()方法,即可收集当前模块所在的目录下的所有测试用例,如下图所示,在run_test.py模块下运行main()方法后,可以收集到同一目录下test_login模块的用例。
四、pytest生成测试报告
pytest支持生成多种格式的测试报告。
通过pytest-html生成HTML格式的测试报告:
首先安装pytest-html扩展,两种方法:方法一,terminal命令行输入pip install pytest-html命令;方法二,File >> Settings >> Project >> Project Interpreter >> 右侧+ >> 搜索pytest-html >> Install Package(注意:一定不要勾选Install to user's site packages directory) 。
然后使用"--html=测试报告路径+报告名”生成测试报告,可以在命令行输入pytest --html=文件路径+文件名称,或者是在main()方法中指定报告存储位置。
五、pytest 测试用例筛选和管理
在用例的上方加上@pytest.mark.标签名称(装饰器),运行时指定标签,可以实现测试用例的灵活筛选和管理(使用pytest的装饰器功能,需要引入pytest包)。如,冒烟测试,可以在主流程的测试用例上方标记@pytest.mark.smoke,命令行输入pytest -m "smoke",pytest测试框架将仅运行含有指定smoke标签的用例。
注意:自定义的标签名称,需要在pytest.ini配置文件中进行注册。pytest配置文件仅支持ini格式(文件名称固定为pytest.ini),section必须设置为pytest,键名称为markers, 值为需要注册的标签名称,如果有多个标签,换行表示。