如何通过拆卸测试失败,仍然可以添加报告内容?

时间:2016-09-27 12:32:51

标签: python pytest

我使用Pytest 3.0(在Python 3.4下)对遗留应用程序进行集成测试。我已经为日志文件和ZeroMQ编写了夹具,因此在测试用例中的任何失败时,夹具都会打印出所有日志文件的内容以及所有ZeroMQ通信。

我通过在pytest_runtest_makereport()中定义conftest.py函数来使用in the documentation描述的模式。它工作正常,并在测试用例出现故障时打印日志文件和ZeroMQ通信的内容。

然而,对于我测试的应用程序的一些失败,唯一的输出是其中一个日志文件中的错误文本。因此,在每个测试用例之后,我需要扫描生成的日志文件中的单词" error"。

我从Run code before and after each test in py.test?了解到,在拆解期间未通过测试会引起争议,但我仍然设法使用pytest.fail()来做到这一点。 Pytest将结果报告为ERROR。

问题是当我从拆解中未通过测试时,我的附加报告(日志文件和ZeroMQ)不会显示。任何想法如何解决这个问题?有没有比在拆解期间测试失败更好的方法?我想避免调用某些函数来检查每个测试用例中的日志文件。

我的夹具看起来像:

@pytest.fixture()
def experimental_fix(request):
    print("**** SETUP ****")
    yield
    print("**** TEARDOWN ****")

    setup_report = request.node.rep_setup
    if setup_report.outcome == "passed":
        # Actually, read logfile contents here
        call_report = request.node.rep_call
        call_report.sections.append(('Logfiles', 'LOGFILE CONTENTS GOES HERE'))

    if True: # Actually, do checking of logfile contents
        pytest.fail("Illegal word found in logfile. See printout.")

        # I have also tried these:
        # raise ValueError("Illegal word found in logfile. See printout.")
        # assert 0, "Illegal word found in logfile. See printout."

虚拟测试用例:

def test_fail_and_add_report(experimental_fix):
    print("AAA")
    #1/0   

0 个答案:

没有答案