在我們的jenkins安裝中,我們只能看到測試的持續時間。Jenkins:顯示測試失敗的日期和時間
我缺少測試運行的日期和時間。
背景:如果數據庫服務器在12:15時有一個hickup,那麼我知道在這個時候失敗的測試可能是這個「hickup」的結果。
我檢查了由py.test(Python)創建的test_result.xml。但我找不到日期時間。有一個xml屬性time="0.0899388790131"
,但這對我來說似乎是一個持續時間。
是否有機會獲得每個測試的日期時間?
在我們的jenkins安裝中,我們只能看到測試的持續時間。Jenkins:顯示測試失敗的日期和時間
我缺少測試運行的日期和時間。
背景:如果數據庫服務器在12:15時有一個hickup,那麼我知道在這個時候失敗的測試可能是這個「hickup」的結果。
我檢查了由py.test(Python)創建的test_result.xml。但我找不到日期時間。有一個xml屬性time="0.0899388790131"
,但這對我來說似乎是一個持續時間。
是否有機會獲得每個測試的日期時間?
你可以通過改變pytest的一些代碼來使pytest寫出每個case的開始時間,只需要兩個步驟。
步驟1
在功能pytest_runtest_makereport
在文件_pytest/runner.py
結束時,將原始的代碼是:
return TestReport(item.nodeid, item.location,
keywords, outcome, longrepr, when,
sections, duration)
添加start
參數是這樣的:
return TestReport(item.nodeid, item.location,
keywords, outcome, longrepr, when,
sections, duration, start=call.start)
步驟2
在功能_opentestcase
在LogXML
類文件_pytest/junitxml.py
末,原代碼是:
self.tests.append(Junit.testcase(
classname=".".join(classnames),
name=bin_xml_escape(names[-1]),
time=getattr(report, 'duration', 0)
))
添加start
關鍵字,該報告的start
屬性作爲其值:
self.tests.append(Junit.testcase(
classname=".".join(classnames),
name=bin_xml_escape(names[-1]),
time=getattr(report, 'duration', 0),
start=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(getattr(report, 'start', 0)))
))
現在,重新運行測試並檢查結果xml文件,每個測試用例都會有一個start
屬性,其值是該案例的開始時間:
<testcase classname="tests.SimpleTest" name="test_fail" start="2015-05-26 19:25:40" time="0.000133037567139">
好的,現在數據在xml中。但Jenkins在web gui中顯示這些數據嗎? – guettli
你是什麼意思?詹金斯顯示了在GUI中構建失敗和傳遞的確切時間。你想要以編程方式嗎? – stanjer
我希望看到**測試失敗的時間。不是**構建**。所有Jenkins知道測試來自test_result.xml文件。由於它不包含開始時間,詹金斯只知道持續時間(在xml中稱爲「時間」)。 – guettli
你想在哪裏看到它? :) – stanjer