Pytest精通指南(27)钩子函数-多重校验(pytest-assume)

发布于:2024-04-24 ⋅ 阅读:(18) ⋅ 点赞:(0)


请添加图片描述

前言

pytest-assumepytest的一个扩展插件,它提供了一种新的断言方式,即**“assume”**。

与常规的assert语句不同,当使用assume进行断言时,即使某个断言失败,pytest-assume也会继续执行后续的断言。

这种特性使得我们可以在一个测试函数中执行多个断言,并收集所有失败的信息,而不是在遇到第一个失败时立即停止测试。

应用场景

  • 多个相关断言:使用pytest-assume,我们可以在一个测试函数中同时进行这些断言,即使某个断言失败,也可以继续执行其他断言,从而获取更全面的测试结果。

  • 调试和日志记录pytest-assume允许我们在测试失败时收集更多关于失败原因的信息。

    由于它会继续执行后续的断言,我们可以利用这个特性来记录更多的调试信息;

    或者执行一些清理操作。这对于定位问题和修复错误非常有帮助。

  • 条件测试pytest-assume允许我们在一个测试函数中根据前面的断言结果来决定是否执行后续的测试步骤。这有助于构建更灵活和可扩展的测试用例。

插件安装

安装命令pip install pytest-assume

在这里插入图片描述

注意事项

  • 性能考虑:由于pytest-assume会继续执行后续的断言,即使前面的断言失败,这可能会导致测试运行的时间增加。
  • 可读性和维护性:过度使用pytest-assume可能会使测试代码变得难以阅读和维护。一个测试函数应该尽可能保持简洁和清晰,避免过多的断言和复杂的逻辑。
  • 错误报告:当使用pytest-assume时,错误报告可能会比使用常规的assert语句更复杂。因为可能有多个断言失败,所以你需要仔细查看错误报告来确定哪些断言失败了,以及失败的原因。

参数分析

pytest-assume的基本用法是使用assume函数来代替常规的assert语句。

assume函数的参数与assert函数类似,都接受一个表达式和一个可选的错误消息。

如果表达式的值为False,那么assume会抛出一个AssertionError异常,并附带提供的错误消息(如果有的话)。

assert断言示例

示例代码

def test_case_01():
    assert 1 == 1
    assert 1 == 2
    assert 1 == 3

执行结果

在这里插入图片描述

assume断言示例

示例代码

import pytest


@pytest.mark.filterwarnings("ignore:.*")
def test_case_01():
    pytest.assume(1 == 1, "表达式返回True断言成功,返回False断言失败")
    pytest.assume(1 == 2, "表达式返回True断言成功,返回False断言失败")
    pytest.assume(1 == 3, "表达式返回True断言成功,返回False断言失败")
    print("测试函数执行完成")

执行结果

在这里插入图片描述