Python 通过测试的py.test日志
我已经一遍又一遍地阅读了文档,但我无法弄清楚如何让py.test写入日志以进行通过的测试。例如,如果我运行py.test--resultlog=mylog.txt myPytest.py“mylog.txt对于通过的每个测试只有一行。我想在日志文件中记录的每个测试中添加其他内容,不管您的测试通过还是失败。例如,我需要知道它们运行的时间、一些输出数据等。如何让py.test在py.test日志文件中包含有关测试(通过和失败)的数据?您可以查看junitxml输出是否提供了更多信息。但我怀疑,如果你想要实际的时间,而不是持续时间等,你将不得不编写自己的插件。该文档为您提供了相关的挂钩:您可以使用py-cov与pytest组合Python 通过测试的py.test日志,python,pytest,Python,Pytest,我已经一遍又一遍地阅读了文档,但我无法弄清楚如何让py.test写入日志以进行通过的测试。例如,如果我运行py.test--resultlog=mylog.txt myPytest.py“mylog.txt对于通过的每个测试只有一行。我想在日志文件中记录的每个测试中添加其他内容,不管您的测试通过还是失败。例如,我需要知道它们运行的时间、一些输出数据等。如何让py.test在py.test日志文件中包含有关测试(通过和失败)的数据?您可以查看junitxml输出是否提供了更多信息。但我怀疑,如果你
py.test --cov $(MOD_NAME) --cov-config .coveragerc --cov-report xml --junit-xml=results.xml
在这里,您将获得所需的所有信息,因为我们用于将coverage.xml文件推送到sonarqube并获取所有可用数据
如果您确实需要来自测试函数的定制数据/日志,只需传递
-s
,这样pytest将停止捕获输出,并在控制台上打印输出(您可以将其流式传输到一个文件,可能不是很好)pytest现在支持-s参数,以防止捕获通过测试的日志调用
pytest -s
从:
-s、 –捕获=通常不捕获标准输出和标准输出,仅在测试失败时显示。-s选项可用于禁用捕获,
显示打印语句、记录调用等的stdcall
这个钩子是一个实验性的,只要断言通过,就会调用它。 从文件- 使用此钩子在传递断言后执行一些处理。原始断言信息在中提供 expl字符串中提供了orig字符串和pytest自省断言信息 此钩子必须由 启用\u断言\u传递\u钩子ini文件选项: 启用此选项时,需要清理项目目录和解释器库中的.pyc文件,如下所示: 断言需要重新编写
[pytest]
enable_assertion_pass_hook=true
import logging
log = logging.getLogger(__name__)
def pytest_assertion_pass(item, lineno, orig, expl):
"""
Prints the log(log file) every time the assert passes
"""
log.info(str(item) + ' | lineno: ' + str(lineno) + ' | ' + orig + ' | PASS')