为 setuptools 创建使用coverage.py生成代码覆盖率报告的命令的最佳方法是什么?
问问题
1296 次
2 回答
2
您正在寻找的是通过扩展扩展 Distutils 功能,它包含在我链接的文档中。基本思想是给出命令和执行的入口点,入口点应该遵循一些基于 setuptools 组件的术语。我认为,您在这里很幸运,因为有人已经成功尝试( 将测试代码覆盖分析添加到 Python 项目的 setup 命令)将其集成到他的项目中,您应该能够将其用于您的目的。
于 2012-03-28T03:21:11.617 回答
0
coverage
这是一个简单的解决方案,它使用对可执行文件的子进程调用。我假设您有一个名为 Python 的包mycoolpackage
,其中包含您要测量测试覆盖率的代码,并且您有一个mytests
包,它公开了一个suite
返回测试套件的函数。
首先,创建一个run-tests.py
文件:
import os.path, sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
import unittest
from mytests import suite
unittest.main(defaultTest='suite')
然后在setup.py
创建以下命令并将其添加到函数的cmdclass
参数中setup()
。
class run_coverage(Command):
description = "Generate a test coverage report."
user_options = []
def initialize_options(self): pass
def finalize_options(self): pass
def run(self):
import subprocess
subprocess.call(['coverage', 'run', '--source=mycoolpackage', 'run-tests.py'])
subprocess.call(['coverage', 'html'])
请注意,它coverage.py
确实有一个 API,它允许您在不使用子进程调用的情况下完成此操作。
于 2012-03-28T03:06:49.660 回答