Joh*_*alt 6 python unit-testing code-coverage coverage.py python-unittest
我搜索了很长时间,令人惊讶地发现没有令人满意的答案.
我的Python项目中有多个模块/文件,我编写单元测试使用unittest.结构是这样的,我有生产模块module_A.py和module_B.py一个目录(比如说myproject/production)和相应的测试文件test_module_A.py和test_module_B.py兄弟目录(比方说myproject/tests).
现在我已经coverage.py安装并希望运行与项目相关的所有测试(即所有.py带有目录前缀test_的tests文件),并接收覆盖率报告,显示所有生产模块(module_A.py和module_B.py)的覆盖范围.
我想通过从myproject/tests目录运行以下命令可以做到这一点:
coverage erasecoverage run -a --source myproject.production test_module_A.pycoverage run -a --source myproject.production test_module_B.pycoverage report这给了我很好的表格,列出了我的所有生产模块及其覆盖结果.到现在为止还挺好.
但是我可以用一个命令来做到这一点吗?假设我想要在一份报告中包含2个或20个或200个测试,那么"手工"这样做似乎很荒谬.
必须有一种自动化方法,但我似乎无法找到它.当然shell脚本可能会这样做,但这是相当笨拙的.我在想类似的东西unittest discover,但是coverage.py这似乎没有用.
或者我能以某种方式使用coverage-API完成此操作吗?到目前为止,我没有运气.
.
解决方案:(信贷给Ned Batchelder先生)
从myproject/tests目录运行:
coverage run --source myproject.production -m unittest discover && coverage report
一行,完全按需要做.
这应该这样做:
coverage.py run -m unittest discover
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3098 次 |
| 最近记录: |