首页 > 解决方案 > 处理要根据测试用例的通过或失败触发操作的 pytest 用例

问题描述

我正在使用 pytest 运行测试用例;尽管我想收集一些日志并压缩所有内容,但前提是出现故障

我确实编写了收集日志并将其压缩的函数,尽管我找不到为每个失败案例实际触发它的方法。我确实使用@classmethod装饰器实现了一个解决方案setUpClassand tearDownClass; 但这仅在所有测试都运行后才会发生,而不是在特定测试失败时发生。

在每个测试中,我运行一个简单的assertFalse(a < b, "the test did fail". 我想仅在实际触发该条件时触发执行日志收集的功能。

标签: python-3.xpytest

解决方案


似乎声明中没有直接的方法可以做到这一点assert,或者我无法找到一种方法。

我只是使用了 try-catch 并在try我引发了一个异常中,在 catch 代码中我调用了该函数。不确定这是否是最好的方法,但它适用于我的情况

try:
    if (a < b):
        raise ValueError ("wrong output, collecting logs")
except ValueError:
    # call function to parse logs
    self.parseoutputonerror(a, b, "/tmp/out.zip")

推荐阅读