pytest之pytest-instafail插件命令行实时输出错误信息

1. 介绍pytest-instafail插件

pytest是一个功能强大的Python测试框架,但在运行测试脚本时,它的输出默认是自动隐藏的。这就意味着,只有当测试运行完毕时,我们才能看到测试结果。为了实时查看测试过程中的错误信息,可以使用pytest-instafail插件。

2. 安装pytest-instafail插件

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

pip install pytest-instafail

2.1 使用Pipenv安装插件

如果你使用的是Pipenv作为Python虚拟环境管理器,可以通过以下命令安装pytest-instafail插件:

pipenv install pytest-instafail

这将会在Pipenv虚拟环境中安装pytest-instafail插件。

3. 启用pytest-instafail插件

pytest-instafail插件安装完成后,我们需要对pytest进行相应的配置才能使用它。

在项目中的pytest配置文件(pytest.ini或者setup.cfg)中,添加以下内容:

[pytest]

addopts = --instafail

通过设置--instafail选项,pytest将在运行测试过程中实时输出错误信息。

你也可以在命令行中使用--instafail选项来启用该插件:

pytest --instafail

4. 运行测试脚本

当pytest-instafail插件启用后,我们可以直接运行测试脚本,同时在命令行中实时查看错误信息。

下面是一个示例:

import pytest

def test_division():

result = 10 / 0 # 故意制造除零错误

assert result == 5

def test_addition():

result = 2 + 2

assert result == 5

运行以上测试脚本后,控制台将会实时显示相关的错误信息:

============================= test session starts =============================

platform darwin -- Python 3.8.2, pytest-6.1.1, py-1.9.0, pluggy-0.13.1

rootdir: /User/pytest_example

collected 2 items

test_sample.py F. [100%]

=================================== FAILURES ===================================

_____________ test_division ______________

def test_division():

> result = 10 / 0 # 故意制造除零错误

E ZeroDivisionError: division by zero

test_sample.py:4: ZeroDivisionError

============ short test summary info ============

FAILED test_sample.py::test_division - ZeroDivisionError: division by zero

=================================================

5. pytest-instafail高级用法

5.1 配置忽略指定的失败

如果某些失败被识别为已知的,你可以在pytest配置文件中配置忽略这些失败。

在pytest.ini或者setup.cfg文件中添加以下内容:

[pytest]

addopts = --instafail --ignore=IgnoreMe

上面的配置将会忽略名为“IgnoreMe”的失败。

5.2 配置忽略所有失败

如果你只想在首次遇到失败时实时显示错误信息,而不在乎之后的失败信息,可以在pytest配置文件中配置如下:

[pytest]

addopts = --instafail --maxfail=1

上述配置将只输出第一个失败的错误信息,并忽略后续失败。

6. 结论

通过使用pytest-instafail插件,我们可以在运行pytest测试脚本时实时输出错误信息。这大大提高了我们的调试效率,尤其是在测试用例数量庞大或者测试用例执行时间较长时。希望这篇文章能帮助您更好地了解和使用pytest-instafail插件。

后端开发标签