Pytest测试实战
本文章详细地阐述下这些第三方插件。
pytest-html
使用pytest-html插件可以生成HTML的测试报告,一般而言我们会把测试存储在测试工程根目录下的report文件夹下,下面详细的演示下详细的生成HTML测试报告的命令,具体如下。
#执行test包下所有的测试用例并把生成的index.html文件存储在report文件夹下
pytest -s -v --html=report/index.html
#执行如上的命令后,输出的结果信息如下
collected 6 items
test/test_command.py::test_login_001 PASSED
test/test_command.py::test_login_002 PASSED
test/test_command.py::test_product PASSED
test/test_command.py::test_platform SKIPPED (屏蔽平台入口)
test/test_index.py::test_case_index PASSED
test/test_platform.py::test_case_query PASSED
打开report文件夹下的index.html文件,测试报告具体如下。
在测试报告中能够很清晰地看到被执行的所有TestCase执行的结果信息,即使存在执行失败的TestCase,也会展示详细的错误信息。
pytest-returnfailures
pytest-returnfailures插件主要指的是针对执行的测试用例再次执行的次数,也可以把它理解为它具备重试的机制。如果您测试的对象如果是底层服务,那么一定需要具备重试机制的特性(一般设计为3次)。编写一个TestCase,在断言的时候故意写写错,执行失败后让执行三次,指定重试执行的次数命令为“--reruns ”,整体执行命令如下。
pytest -s -v --reruns 3 --html=report/index.html
执行如上的命令后,执行的结果信息如下:
如上可以看到针对执行执行失败的test_func测试函数再次执行了三次,打开HTML的测试报告也可以看到这个特性,具体见截图信息。
pytest-repeat
pytest-repeat插件指的是执行测试用例的次数,这个场景相对而言应用的比较少,一般而言我们只会把测试用例执行一次,而很少执行多次,当然针对执行失败的的测试用例一般会选择再次执行。该插件执行的命令具体如下。
pytest -s -v --count=2 test/test_platform.py
如上命令指的是针对test包下的test_platform模块里面的TestCase执行2次,执行后的结果信息如下所示。
pytest-timeout
pytest-timeout插件指的是设置被执行的测试用例执行的时间,如果被执行的TestCase执行的耗时在指定的时间范围内,那么认为是OK的,如果超过指定的时间范围,就会显示失败,使用该插件执行的命令为“--timeout”,执行命令具体如下。
pytest -s -v --timeout=2 test/test_platform.py
执行后的结果信息如下:
下面我把执行超时时间设置为0.5(实际执行超时时间会超过1秒),见执行后的结果信息。
如上所示可以看到执行的超时时间是大于0.5的,所以执行结果是Failed。这个插件一般建议慎重使用,实际工作中被执行的TestCase耗时都会在几秒,如果没有明确的要求,只要执行的耗时在可以接受的范围内,都是可以的。如果确实有明确的要求,比如被执行的每个TestCas执行耗时不能超过1秒,可以使用该插件来满足这个需求。
Pytest测试框架提供的第三方插件是非常丰富的,下个文章详细的介绍下分布式执行的策略与注意事项。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。