2010-10-15 43 views
8

我有一個測試套件,輸出測試結果在Python單元測試格式:http://docs.python.org/library/unittest.htmlBuildbot解析Python的單元測試結果

有一個現有的Buildbot模塊/插件,可以解析這種形式?

例子:

DigitalReadWrite_02           ... ok 
DigitalReadWrite_03           ... ok 
DigitalReadWrite_04           ... ok 
PWMoutput_02 (PWM=128 50% LOW 49% HIGH)     ... ok 
PWMoutput_03 (PWM=128 50% LOW 49% HIGH)     ... ok 
PWMoutput_04 (PWM=128 50% LOW 49% HIGH)     ... ok 
-------------------------- 
Ran 6 tests in 1.652s 

OK 

我寫了一個自定義的解析器,但它只得到了基本情況。是否值得努力使其適用於所有類型的Python單元測試格式。

+1

是值得的 – 2010-10-21 00:19:27

+0

這是一個測試* runner *的工作,例如'nose'或'py.test',以提供可解析的輸出,如XUnit XML格式。 – jfs 2011-01-22 03:04:46

回答

3

不,開發解析器是沒有意義的。您可以從runner.py模塊的課程中獲得相應的信息。

考慮您的自定義邏輯(Python 2.7版)上延伸的兩個類TextTestRunnerTextTestResult。您列出的輸出由TextTestResult生成。

另外,您只能擴展TextTestResult和改變類屬性TextTestRunner.resultclass將其設置爲你的新擴展類的名稱。

您可以從TextTestResult中提取數據並將其放入某些字典列表中的數據更大或等同於解析器可以提取的數據。

由於其靈活的設計,unittest框架允許使用這種技巧。 希望這有幫助。

[編輯]

我會發現在發佈的結果爲止(例如,作爲在GitHub上的開源代碼)可能非常有用的是找到你的問題的人!

話雖如此,我懷疑除了基本的正則表達式解析之外,改進實際解析器會很容易。

如果您仍然想追求文本解析方法 - 您可能需要列舉並描述您想要覆蓋/支持的「所有Python單元測試格式」。如果你很幸運地將這樣的描述以無上下文語法的形式表達出來,那麼也許你就能夠爲它開發一個解析器,這將把「那些」案例作爲一種語言的形式。

請記住我的話:如果文本解析不被簡單的正則表達式覆蓋,而且有可能試圖解析一些不規則的(上下文相關的)語言 - 很可能您會發現它非常困難去完成。

+0

對於無法使用跑步者的人來說,仍然很高興 – trinth 2013-10-09 20:58:09

+0

正則表達式和麪向對象編程之間的任何選擇都只是爲了方便。順便說一句,如果你說你沒有訪問或控制Runner類,即過度組織你的測試環境,那麼解析文本對於文本報告來說可能是好的。但是,如果這確實如此,我會非常警惕......如果您對測試工作流程沒有適當的控制權限,那麼它可能無法帶給您太多。 – 2013-10-09 21:54:00

+0

我幾乎同意你的意見。但如果有人有興趣將其作爲練習或樂趣,他們可能想要回答原始問題。 – trinth 2013-10-12 17:32:50