为使用coverage.py生成代码覆盖率报告的setuptools创建命令的最佳方式是什么
发布于 2012-03-28 11:21:12
您正在寻找的是Extending Distutils capabilities through extensions,它在我链接的文档中涵盖。基本思想是给出命令和entr5y的执行点,入口点应该遵循一些基于setuptools组件的术语。我认为,你在这里很幸运,因为已经有人成功地尝试( Adding Test Code Coverage Analysis to a Python Project's setup Command )将它集成到他的项目中,并且你应该能够采用它来达到你的目的。
发布于 2012-03-28 11:06:50
下面是一个简单的解决方案,它使用子进程调用coverage可执行文件。我假设您有一个名为mycoolpackage的Python包,其中包含您想要测量其测试覆盖率的代码,并且您有一个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中创建以下命令,并将其添加到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确实有一个允许您在不使用子流程调用的情况下完成此操作的应用程序接口。
https://stackoverflow.com/questions/9900347
复制相似问题