2015-05-21 34 views
1

在我們的jenkins安裝中,我們只能看到測試的持續時間。Jenkins:顯示測試失敗的日期和時間

我缺少測試運行的日期和時間。

背景:如果數據庫服務器在12:15時有一個hickup,那麼我知道在這個時候失敗的測試可能是這個「hickup」的結果。

我檢查了由py.test(Python)創建的test_result.xml。但我找不到日期時間。有一個xml屬性time="0.0899388790131",但這對我來說似乎是一個持續時間。

是否有機會獲得每個測試的日期時間?

+0

你是什麼意思?詹金斯顯示了在GUI中構建失敗和傳遞的確切時間。你想要以編程方式嗎? – stanjer

+0

我希望看到**測試失敗的時間。不是**構建**。所有Jenkins知道測試來自test_result.xml文件。由於它不包含開始時間,詹金斯只知道持續時間(在xml中稱爲「時間」)。 – guettli

+0

你想在哪裏看到它? :) – stanjer

回答

2

你可以通過改變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

在功能_opentestcaseLogXML類文件_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"> 
+0

好的,現在數據在xml中。但Jenkins在web gui中顯示這些數據嗎? – guettli