我正在使用nosetests对一些python脚本进行单元测试 . 有问题的脚本会创建一个子进程 . 我正在使用以下命令执行脚本:nosetests -s -v 'python script.py' --with-coverage
我安装了 nose-cov . 它的版本是 1.6 .
我得到的报道报告不包含孩子执行的代码的覆盖范围 .
IS THERE ANY WAY OF GETTING THE COVERAGE OF THE CHILD PROCESS??
谢谢
Nose正在使用杰出的coverage封装下的工作 . 假设您使用子进程启动子进程,在您的测试中,您可以暂时将启动您的孩子作为补丁:
subprocess.call(['coverage', 'run', 'my_child_program.py', '-p'])
使用 -p 选项组合报告 . 您可能需要其他选项以确保您的nose选项指向与子进程调用相同的 .coverage 报告文件 .
-p
.coverage
如果您的脚本定义如下:
def main(argv=None): ... args = parser.parse_args(argv) ... if __name__ == '__main__': # pragma: no cover main()
您可以在测试中调用 main() 函数:
main()
yourmodule.main([ '--opt1', 'val1', '--opt2', 'val2', 'arg1', 'arg2' ])
2 回答
Nose正在使用杰出的coverage封装下的工作 . 假设您使用子进程启动子进程,在您的测试中,您可以暂时将启动您的孩子作为补丁:
使用
-p
选项组合报告 . 您可能需要其他选项以确保您的nose选项指向与子进程调用相同的.coverage
报告文件 .如果您的脚本定义如下:
您可以在测试中调用
main()
函数: