为子进程启用python覆盖率
coverage_enable_subprocess的Python项目详细描述
此软件包安装一个pth文件,该文件启用coveragepy进程启动 此python prefix/virtualenv在后续运行中的特性。
见:http://nedbatchelder.com/code/coverage/subprocess.html
演示:
$ virtualenv tmpenv $ . tmpenv/bin/activate $ pip install coverage-enable-subprocess $ touch .coveragerc $ export COVERAGE_PROCESS_START=$PWD/.coveragerc $ echo 'print("oh, hi!")' > ohhi.py $ python ohhi.py oh, hi! $ coverage report Name Stmts Miss Cover ----------------------------------------------------- /etc/python2.6/sitecustomize.py 5 1 80% ohhi.py 1 0 100% tmpenv/lib/python2.6/site.py 433 392 9% ----------------------------------------------------- TOTAL 439 393 10%
对于在测试运行期间需要cd并并行运行许多进程的项目, 我确保导出一个$TOP变量,并使用此.coveragerc:
[run] parallel = True branch = True data_file = $TOP/.coverage [report] exclude_lines = # Have to re-enable the standard pragma \#.*pragma:\s*no.?cover # we can't get coverage for functions that don't return: \#.*never returns \#.*doesn't return # Don't complain if tests don't hit defensive assertion code: ^\s*raise Impossible\b ^\s*raise AssertionError\b ^\s*raise NotImplementedError\b ^\s*return NotImplemented\b # Don't complain if tests don't hit re-raise of unexpected errors: ^\s*raise$ # if main is covered, we're good: ^\s*exit\(main\(\)\)$ show_missing = True [html] directory = $TOP/coverage-html # vim:ft=dosini