Pytest测试实战|常用插件

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测试框架提供的第三方插件是非常丰富的,下个文章详细的介绍下分布式执行的策略与注意事项。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

### 回答1: 好的,下面是一个简单的 pytest 测试实战: 假设我们有一个函数,接收两个数字参数并返回它们的乘积: ```python def multiply(a, b): return a * b ``` 我们可以使用 pytest 来编写测试用例,确保函数的行为符合预期。首先,我们需要创建一个名为 `test_multiply.py` 的文件,在其中编写测试用例。 ```python # test_multiply.py from multiply import multiply def test_multiply_positive_numbers(): result = multiply(2, 3) assert result == 6 def test_multiply_negative_numbers(): result = multiply(-2, -3) assert result == 6 def test_multiply_zero(): result = multiply(0, 5) assert result == 0 result = multiply(5, 0) assert result == 0 ``` 在这个测试用例中,我们创建了三个测试函数,分别测试两个正数相乘、两个负数相乘以及其中一个数为零的情况。使用 `assert` 关键字来断言函数的返回值是否符合预期。 运行测试用例,可以使用以下命令: ``` pytest test_multiply.py ``` 如果所有测试用例都通过,pytest 将输出以下内容: ``` ============================= test session starts ============================= platform linux -- Python 3.8.5, pytest-6.2.1, py-1.10.0, pluggy-0.13.1 rootdir: /path/to/test_directory plugins: anyio-2.2.0 collected 3 items test_multiply.py ... [100%] ============================== 3 passed in 0.01s ============================== ``` 如果有任何测试用例失败,pytest 将输出详细的错误信息,帮助您快速定位问题。 这就是一个简单的 pytest 测试实战,它可以帮助您编写可靠的测试用例以确保代码的正确性。 ### 回答2: pytest是一种Python的测试框架,它提供了一系列的方法和工具来编写和执行测试用例。pytest测试实战是指在实际项目中使用pytest进行测试的过程。 首先,我们可以使用pytest编写测试脚本。测试脚本可以包含多个测试用例,每个测试用例是一个以test_开头的函数。我们可以使用assert语句来断言测试的结果是否符合预期。pytest提供了丰富的断言方法,可以方便地进行各种断言操作。 其次,我们可以使用pytest的fixture功能来创建和管理测试的前置条件。fixture可以用来模拟测试环境和数据,使测试用例的编写更加简洁和灵活。我们可以在测试用例中使用fixture来获取测试数据或者创建测试环境,从而减少重复的代码。 另外,pytest还提供了参数化测试的功能,可以通过参数化的方式运行同一个测试用例的多组测试数据。这样可以提高测试覆盖率,减少测试代码的编写量。 pytest还支持多线程和分布式测试,可以实现并发执行测试用例,提高测试效率。同时,pytest还提供了详细的测试报告和日志功能,方便我们查看和分析测试结果。 最后,使用pytest进行测试实战时,我们可以根据项目的需要进行自定义的插件开发。pytest提供了丰富的插件接口,可以轻松扩展pytest的功能和特性。 总而言之,pytest测试实战是指在实际项目中使用pytest进行测试的过程。通过使用pytest,我们可以简洁高效地编写和执行测试用例,提高测试效率,并且可以根据项目的需要进行自定义的插件开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值