2013-09-20 2 views
0

Я использую nosetests для модульного тестирования какого-либо скрипта python. Этот сценарий создает дочерний процесс. Я выполнение сценария с помощью команды: nosetests -s -v 'питона script.py' --with-покрытияОтчет о покрытии носететов в случае дочернего процесса

Я установил нос коронавирус. Его версия 1.6.

Отчет о покрытии, который я получаю, не содержит охвата кода, выполняемого дочерним элементом.

ЕСТЬ ЛИ КАКИЕ-ЛИБО ПУТЬ ПОЛУЧЕНИЯ ПОКРЫТИЯ РЕБЕНКА ПРОЦЕССА?

Благодаря

ответ

1

Нос использует выдающийся coverage пакет под крышкой делает работу. Предполагая, что вы запускаете свой дочерний процесс с использованием подпроцесса, в пределах вашего теста вы можете временно mock или обезьяна патч запуска вашего ребенка, как:

subprocess.call(['coverage', 'run', 'my_child_program.py', '-p']) 

С -p возможностью объединения отчетов. Возможно, вам понадобятся другие параметры, чтобы убедиться, что параметры вашего носа указывают на тот же файл отчета .coverage как ваш вызов подпроцесса.

0

Если ваш сценарий определяется следующим образом:

def main(argv=None): 
    ... 
    args = parser.parse_args(argv) 

    ... 

if __name__ == '__main__': # pragma: no cover 
    main() 

Вы можете вызвать функцию main() в тесте:

yourmodule.main([ 
    '--opt1', 'val1', 
    '--opt2', 'val2', 
    'arg1', 
    'arg2' 
]) 
Смежные вопросы