2016-03-04 3 views
1

У меня есть набор тестовых сценариев, сохраненных в pwd. Я хотел бы иметь возможность подсчитать количество единичных тестов (nosetests), который будет выполняться (без фактического их выполнения) и возвращает этот номер в переменной питона, как это:Число и количество нулевых чисел

>>> 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

Смежные вопросы