在编写自动化测试用例时,我们常常需要对同一个测试点进行多次验证。传统的 assert 语句一旦失败便会立即终止当前测试函数的执行,导致后续的断言无法运行,这不利于我们收集完整的测试失败信息。pytest-assume 插件正是为了解决这一问题而生,它允许在单个测试用例中执行多个断言,即使中间有断言失败,后续的断言仍会继续执行。
应用场景
- 多重校验:对同一测试对象或业务逻辑,需要执行多个独立的断言。
- 收集完整失败信息:即使某个断言失败,也希望继续执行剩余断言,以获取所有不通过的点,便于一次性分析和修复。
插件安装
通过 pip 即可轻松安装 pytest-assume 插件:
pip install pytest-assume

核心差异:assert vs pytest.assume
assert:某个断言失败后,同一函数内其后的代码(包括其他断言)将不会被执行。
pytest.assume:某个断言失败后,同一函数内其后的 pytest.assume 断言依然会继续执行,直到该测试函数结束。
实战对比
示例一:使用传统 assert
import pytest
def test_using_assert():
assert 1 == 1 # 通过
assert 1 == 2 # 失败,此后的代码不会执行
assert 2 == 2 # 不会被执行
执行结果:第二个断言失败后,测试立即停止,第三个断言未被评估。

示例二:使用 pytest.assume
这是提升自动化测试效率的有效手段。
import pytest
def test_using_assume():
pytest.assume(1 == 1) # 通过
pytest.assume(1 == 2) # 失败,但继续执行
pytest.assume(2 == 3) # 失败,继续执行并记录
执行结果:所有三个断言都被依次执行,并在最终报告中汇总显示失败信息。

通过 pytest-assume,测试者可以在一次执行中验证多个条件,并得到完整的校验结果报告,大大提升了在复杂Python测试场景下的排错效率。
|