Python pytest:在每次looponfail运行时写入时间戳
我使用Python pytest:在每次looponfail运行时写入时间戳,python,pytest,Python,Pytest,我使用pytest上的-f(-looponfail)选项在重构时连续运行单元测试套件。这真是太棒了 问题是,我无法通过查看上一次测试运行的时间来判断,这将有助于了解我何时将终端屏幕隐藏了一段时间,并可能对依赖项进行了一些更改 如何让它在每次测试运行时打印日期/时间戳 为此,我也使用了entr,在pytest命令前面添加了一个date命令,但是在looponfail选项上没有接缝可以添加类似的内容。与更复杂的entr命令相比,pytest-f命令要短得多,也更容易正确执行,因此我想问问是否有人找到
pytest
上的-f
(-looponfail)选项在重构时连续运行单元测试套件。这真是太棒了
问题是,我无法通过查看上一次测试运行的时间来判断,这将有助于了解我何时将终端屏幕隐藏了一段时间,并可能对依赖项进行了一些更改
如何让它在每次测试运行时打印日期/时间戳
为此,我也使用了
entr
,在pytest
命令前面添加了一个date命令,但是在looponfail选项上没有接缝可以添加类似的内容。与更复杂的entr
命令相比,pytest-f
命令要短得多,也更容易正确执行,因此我想问问是否有人找到了解决方法。正如hoefling上面提到的,这可以使用pytest挂钩完成。在这种情况下,将以下内容放入项目目录中的conftest.py
:
from datetime import datetime
def pytest_unconfigure(config):
# ---called after test run, just before exiting---
print("Last run: %s" % datetime.now().strftime("%b %d %H:%M"))
您应该修改记录器:@PMende,除非我遗漏了什么,它只控制捕获的日志消息的显示,如
logger.warn(“foo”)
,而不添加测试运行的“日志”。它肯定不会在我的安装上写任何东西。你希望打印日期的具体方式和时间?有很多方法可以添加自定义输出;查看示例。例如,通过pytest\u terminal\u summary
hook:def pytest\u terminal\u summary(terminalreporter,exitstatus,config):terminalreporter.write\u sep('=',datetime.datetime.today().strftime('%d-%b-%Y%H:%M:%S'),yellow=True,bold=True)
Ah,@hoefling,我对此感觉很好,钩子正是我一直在寻找但没有找到的东西:)-f选项反复运行测试,所以我认为取消配置钩子应该可以工作,但即使不行,我也很确定我能找到一个可以工作的钩子。我将根据您的其他答案尝试一些,并向您汇报:)很高兴我能提供帮助!:-)