前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest测试实战|常用插件

Pytest测试实战|常用插件

作者头像
无涯WuYa
发布2024-04-23 16:36:24
800
发布2024-04-23 16:36:24
举报

Pytest测试实战

The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries. 这段话很好地阐述了Pytest的设计思想与强大的特性。之前详细地阐述了Pytest测试框架搜索规则Pytest测试框架执行方式Pytest测试框架参数化Pytest测试框架Fixture详解Pytest测试框架中Conftest.py详解Pytest测试框架常用命令。Pytest测试框架另外一个优秀的特性是提供了非常丰富的第三方插件,本文章详细地阐述下这些第三方插件。

pytest-html

使用pytest-html插件可以生成HTML的测试报告,一般而言我们会把测试存储在测试工程根目录下的report文件夹下,下面详细的演示下详细的生成HTML测试报告的命令,具体如下。

代码语言:javascript
复制
#执行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 ”,整体执行命令如下。

代码语言:javascript
复制
pytest -s -v  --reruns 3  --html=report/index.html

执行如上的命令后,执行的结果信息如下:

如上可以看到针对执行执行失败的test_func测试函数再次执行了三次,打开HTML的测试报告也可以看到这个特性,具体见截图信息。

pytest-repeat

pytest-repeat插件指的是执行测试用例的次数,这个场景相对而言应用的比较少,一般而言我们只会把测试用例执行一次,而很少执行多次,当然针对执行失败的的测试用例一般会选择再次执行。该插件执行的命令具体如下。

代码语言:javascript
复制
pytest -s -v --count=2  test/test_platform.py

如上命令指的是针对test包下的test_platform模块里面的TestCase执行2次,执行后的结果信息如下所示。

pytest-timeout

pytest-timeout插件指的是设置被执行的测试用例执行的时间,如果被执行的TestCase执行的耗时在指定的时间范围内,那么认为是OK的,如果超过指定的时间范围,就会显示失败,使用该插件执行的命令为“--timeout”,执行命令具体如下。

代码语言:javascript
复制
pytest -s -v --timeout=2 test/test_platform.py

执行后的结果信息如下:

下面我把执行超时时间设置为0.5(实际执行超时时间会超过1秒),见执行后的结果信息。

如上所示可以看到执行的超时时间是大于0.5的,所以执行结果是Failed。这个插件一般建议慎重使用,实际工作中被执行的TestCase耗时都会在几秒,如果没有明确的要求,只要执行的耗时在可以接受的范围内,都是可以的。如果确实有明确的要求,比如被执行的每个TestCas执行耗时不能超过1秒,可以使用该插件来满足这个需求。

Pytest测试框架提供的第三方插件是非常丰富的,下个文章详细的介绍下分布式执行的策略与注意事项。感谢您的阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档