如何使用 pytest session_finish 获取测试持续时间?
How do I obtain test durations with pytest session_finish?
而不是捕获 --durations=...
的打印输出,我如何通过例如捕获它们pytest_sessionfinish
函数?
我试图通过插件中的字典 self.durations = {}
捕获它们 class:
def pytest_runtest_logreport(self, report):
self.durations[report.head_line] = report.duration
但从 pytest 本身的报告来看,这些数字似乎太低了。
您可能正在捕获拆解的持续时间(或者我想更具体地说,您正在捕获所有这些,但(通常是微不足道的)拆解正在破坏其他的)——您需要专门过滤 .when == 'call'
class CollectResults:
def __init__(self) -> None:
self.times: dict[str, bool] = {}
def pytest_runtest_logreport(self, report: pytest.TestReport) -> None:
if report.when == 'call':
self.results[report.head_line] = report.duration
___
disclaimer: I'm one of the pytest core devs
而不是捕获 --durations=...
的打印输出,我如何通过例如捕获它们pytest_sessionfinish
函数?
我试图通过插件中的字典 self.durations = {}
捕获它们 class:
def pytest_runtest_logreport(self, report):
self.durations[report.head_line] = report.duration
但从 pytest 本身的报告来看,这些数字似乎太低了。
您可能正在捕获拆解的持续时间(或者我想更具体地说,您正在捕获所有这些,但(通常是微不足道的)拆解正在破坏其他的)——您需要专门过滤 .when == 'call'
class CollectResults:
def __init__(self) -> None:
self.times: dict[str, bool] = {}
def pytest_runtest_logreport(self, report: pytest.TestReport) -> None:
if report.when == 'call':
self.results[report.head_line] = report.duration
___
disclaimer: I'm one of the pytest core devs