2

为 setuptools 创建使用coverage.py生成代码覆盖率报告的命令的最佳方法是什么?

4

2 回答 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 回答