儿童过程中鼻试的覆盖率报告

时间:2013-09-20 06:59:46

标签: python unit-testing code-coverage nosetests coverage.py

我正在使用nosetests对某些python脚本进行单元测试。有问题的脚本会创建一个子进程。 我正在使用以下命令执行脚本: nosetests -s -v'python script.py'--with-coverage

我已经安装了 nose-cov 。它的版本 1.6

我收到的报道报告不包含孩子执行的代码的覆盖范围。

是否有任何获得儿童过程的方法?

由于

2 个答案:

答案 0 :(得分:1)

Nose正在使用杰出的coverage封装下的工作。假设您使用子流程启动子流程,在测试中您可以暂时mock或猴子修补您的孩子的启动:

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

使用-p选项组合报告。您可能需要其他选项以确保您的nose选项指向与子进程调用相同的.coverage报告文件。

答案 1 :(得分: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'
])