2014-06-18 116 views
3

我正在運行nosetests用這樣的計時器模塊:獲取測試結果

import nose 
from nosetimer import plugin 
from collections import defaultdict 
import time 
import pandas as pd 

plugin = plugin.TimerPlugin() 
plugin.enabled = True 
plugin.timer_ok = 1000 
plugin.timer_warning = 2000 
plugin.timer_no_color = False 
logList = defaultdict(list) 

nose.run(plugins=[plugin]) 
result = plugin._timed_tests 
for test in result: 
    logList[test].append(result[test]) 

,我想知道是否有可能讓每個測試名的映射傳遞/失敗/錯誤是這樣的:

{ 
'example.file.path.test1': 'pass', 
'example.file.path.test2': 'pass', 
'example.file.test3': 'fail', 
'example.file.test4': 'pass', 
'example.file.path2.test5': 'error', 
'example.file.path2.test6': 'pass' 
} 

但沒有讀取標準輸出。換句話說,有沒有一個位置可以存儲這些信息?我一直在閱讀文檔和代碼幾個小時沒有運氣,所以我覺得我可能會錯過一些東西。

回答

2

這個數據是可用的,但至少在我能夠回想起我的頭頂時,唯一的方法就是使用鼻插件接口來編寫自己的插件。插件並不是那麼複雜,特別是對於這樣的事情。你需要pass,fail/error和start測試鉤子以及test.address()來獲得像這樣的工作,如果內存服務的話。

+0

我知道我可以用插件做,但我希望有一個更簡單的方法來獲得這些結果。如果可能的話,我想單獨離開setup.py。 – weskpga

+0

我非常肯定,如果有什麼工作,它將是一個無證的破解,這意味着你必須自己的代碼。 –

+0

無證黑客是要走的路。 – weskpga

2

您也可以在nosetests --with-xunitnose.plugins.xunit.Xunit)上捎帶,這會產生xml的測試結果。您可以輕鬆解析生成的xml並提取所需的數據。