失败即显现:掌握pytest-instafail插件,快速定位问题

前言

当测试套件中有多个测试用例时,当其中一个用例执行失败时,我们想要立即看到错误信息,方便及时调试,而不是等到所有用例执行完成再去分析,如果用例执行时间很长,想想,=每次调试都需要所有用例执行完成才能看到错误信息,那会降低效率,那该如何在用例失败时立即显示错误信息呢?带着问题我们一起探索。

pytest-instafail 是啥

针对前言中问题,我们使用pytest-instafail 插件可以方便解决。

pytest-instafail 插件,它是一个 pytest 的插件,能够在测试过程中实时显示每个失败的用例信息,提高测试报告的可读性和排查问题的效率。

安装 pytest-instafail 插件

首先,确保已经安装了 pytest。然后,在命令行中运行以下命令,安装 pytest-instafail 插件:

pip install pytest-instafail

pytest-instafail 插件如何使用

如果是命令行方式执行,可以像这样

css 复制代码
pytest --instafail

如果是脚本执行,可以像这样

css 复制代码
pytest.main(["--instafail", "/test_dir/test_demo.py"])
​

实际案例

我们写一些测试用例看一下效果

test_demo.py

java 复制代码
import time
​
def test_addition():
    assert 2 + 2 == 4
​
def test_subtraction():
    assert 5 - 3 == 3
​
def test_multiplication():
    time.sleep(60)
    assert 2 * 3 == 6
​
def test_division():
    assert 10 / 2 == 5
​
def test_exponentiation():
    assert 2 ** 3 == 9
​

测试用例执行太快可能体现不出pytest-instafail 插件的强大,所以我们在测试用例test_multiplication增加了等待时间。

先看看不用该插件的执行效果:

arduino 复制代码
...
test_dir/test_demo.py::test_subtraction FAILED
test_dir/test_demo.py::test_multiplication

可以看到用例test_subtraction只提示失败,而没有详细的错误信息。

再看看使用插件的执行效果:

markdown 复制代码
...
test_dir/test_demo.py::test_subtraction FAILED
___________________________________________________________ test_subtraction ___________________________________________________________
​
    def test_subtraction():
>       assert 5 - 3 == 3
E       assert (5 - 3) == 3
​
test_dir/test_demo.py:7: AssertionError
​
test_dir/test_demo.py::test_multiplication

哈哈,是不是很强大,详细错误信息显示出来了,这样我们不用等后面用例执行完成,就可以去调试这条用例了。

运行原理

到这里应该知道如何使用了,我们接下来看看它的运行原理:

  1. Hook函数注册: pytest插件系统允许开发者注册自定义的hook函数,这些hook函数会在pytest的不同阶段被调用。pytest-instafail插件通过注册自己的hook函数来拦截和处理失败用例。
  2. 捕获和保存异常信息: 当pytest执行过程中的一个测试用例失败时,pytest-instafail插件会捕获到该失败,并保存失败的相关信息,例如错误消息、堆栈跟踪等。
  3. 实时显示失败用例信息: pytest-instafail插件会将捕获到的失败用例信息实时显示在终端上,而不是等到所有用例执行完毕才显示测试结果。这样可以帮助开发者更快地发现和定位问题。
  4. 保持原有的测试报告结构: pytest-instafail插件会保持原有的pytest测试报告结构,即使有失败的用例信息实时显示在终端上,最终生成的测试报告也会包含所有用例的结果,包括成功和失败的用例。

总的来说,pytest-instafail插件通过拦截并处理pytest测试框架的失败用例,实时显示失败用例信息,提供更好的测试反馈和调试能力。这样可以让开发者更快地发现问题,并提高测试效率。

结论

如果你的测试用例非常简单且执行速度很快,那么可能在测试过程中实时显示失败用例信息对于提高效率并没有太大的帮助。但在大型测试套件中非常有用,它为我们提供了实时的失败用例信息,使得在大型测试套件中进行故障排查更加高效。

相关推荐
郑祎亦6 分钟前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
nuclear201117 分钟前
使用Python 在Excel中创建和取消数据分组 - 详解
python·excel数据分组·创建excel分组·excel分类汇总·excel嵌套分组·excel大纲级别·取消excel分组
本当迷ya19 分钟前
💖2025年不会Stream流被同事排挤了┭┮﹏┭┮(强烈建议实操)
后端·程序员
Lucky小小吴32 分钟前
有关django、python版本、sqlite3版本冲突问题
python·django·sqlite
GIS 数据栈1 小时前
每日一书 《基于ArcGIS的Python编程秘笈》
开发语言·python·arcgis
爱分享的码瑞哥1 小时前
Python爬虫中的IP封禁问题及其解决方案
爬虫·python·tcp/ip
计算机毕设指导61 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
paopaokaka_luck2 小时前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
傻啦嘿哟2 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
B站计算机毕业设计超人2 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化