Python coverage.py的setuptools命令
为setuptools创建命令以生成代码覆盖率报告的最佳方法是什么?这里有一个简单的解决方案,它使用对Python coverage.py的setuptools命令,python,setuptools,coverage.py,Python,Setuptools,Coverage.py,为setuptools创建命令以生成代码覆盖率报告的最佳方法是什么?这里有一个简单的解决方案,它使用对覆盖率可执行文件的子流程调用。我假设您有一个名为mycolpackage的Python包,其中包含要测量测试覆盖率的代码,您还有一个mytests包,它公开了一个返回测试套件的suite函数 首先,创建一个runtests.py文件: import os.path, sys sys.path.insert(0, os.path.abspath(os.path.dirname(__file__))
覆盖率
可执行文件的子流程调用。我假设您有一个名为mycolpackage
的Python包,其中包含要测量测试覆盖率的代码,您还有一个mytests
包,它公开了一个返回测试套件的suite
函数
首先,创建一个runtests.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
中创建以下命令,并将其添加到setup()
函数的cmdclass
参数中
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,它允许您在不使用子流程调用的情况下完成此操作。您正在寻找的是,我链接的文档中已经介绍了它。基本思想是给出命令和entr5y执行点,入口点应该遵循一些基于setuptools组件的术语。我认为,您在这里很幸运,因为有人已经成功地()将其集成到他的项目中,您应该能够将其用于您的目的。只有在您使用setuptools的内部testrunner时,添加coverage命令才真正有用。有了它,您就可以运行coverage命令了。