2016-03-04 12 views
1

我有一組保存在密碼中的單元測試腳本。我想能夠算的單元測試(nosetests),將被執行(無需實際執行它們)數量,並返回該數字爲Python變量是這樣的:計數和返回的鼻測數

>>> number_of_unit_tests = count_unit_tests('.') 
>>> number_of_unit_tests 

400 

我知道我可以從收集像這樣的命令行:

nosetests --collect-only 

但是有可能從一個腳本內做到這一點?

回答

1

您可以運行任何鼻子命令形式的Python腳本,如basic nose usage中所述,唯一的技巧是提取測試的數量。我看了看functional tests in nose並想出這樣的事情應該工作,但您可能能夠進一步修剪下來:

import sys 
import unittest 
from cStringIO import StringIO 

import nose 
from nose.result import _TextTestResult 


class TestRunner(unittest.TextTestRunner): 
    def _makeResult(self): 
     self.result = _TextTestResult(
      self.stream, self.descriptions, self.verbosity) 
     return self.result 


def count_unit_tests(module_name): 
    stream = StringIO() 
    runner = TestRunner(stream=stream) 

    result = nose.run(
     testRunner=runner, 
     argv=[sys.argv[0], 
       module_name, 
       '-s', 
       '-v', 
       '--collect-only' 
     ] 
    ) 

    return runner.result.testsRun 

if __name__ == '__main__': 
    print count_unit_tests('.') 
+0

偉大的工作,謝謝! – Chris