在终结器中访问pytest assert消息

时间:2015-02-09 16:19:05

标签: python pytest

我正在尝试使用pytest生成自定义报告,并尝试在conftest.py文件中的全局夹具的终结器中,在发生故障的情况下访问pytest生成的断言消息。我能够访问测试的状态,但我无法收到错误消息。

我想以下列方式访问状态消息

@pytest.fixture(scope='function',autouse = True)
def logFunctionLevel(request):
    start = int(time.time() * 1000)
    def fin():
        stop = int(time.time())
        fo = open("/Users/mahesh.nayak/Desktop/logs/test1.log", "a")
        fo.write(request.cls.__name__ + "." + request.function.__name__ + " " + str(start) + " " + str(stop) + "\n")

赞赏访问异常消息的任何帮助

由于

编辑:布鲁诺的回答确实有所帮助。添加以下行打印断言。

  l = str(report.longrepr)
  fo.write(l)

2 个答案:

答案 0 :(得分:0)

我不确定您是否可以从灯具中访问异常消息,但您可以实现自定义pytest_runtest_logreport挂钩(未经测试):

def pytest_runtest_logreport(report):
    fo = open("/Users/mahesh.nayak/Desktop/logs/test1.log", "a")
    fo.write('%s (duration: %s)\n' % (report.nodeid, report.duration))
    fo.close()

希望有所帮助。

答案 1 :(得分:0)

要从固定装置访问断言消息,您可以按照此处的文档进行操作:

https://docs.pytest.org/en/latest/example/simple.html#making-test-result-information-available-in-fixtures

您要提出的问题是这样的:(未经测试的代码)

(?<=Betreft:)[^:]+(?=gagaga)

布鲁诺·奥利维拉(Bruno Oliveira)回答的主要区别在于,当夹具可以在测试结束时被称为只有一次