我正在使用nosetests对某些python脚本进行单元测试。有问题的脚本会创建一个子进程。 我正在使用以下命令执行脚本: nosetests -s -v'python script.py'--with-coverage
我已经安装了 nose-cov 。它的版本 1.6 。
我收到的报道报告不包含孩子执行的代码的覆盖范围。
是否有任何获得儿童过程的方法?
由于
答案 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'
])