Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python coverage.py的setuptools命令_Python_Setuptools_Coverage.py - Fatal编程技术网

Python coverage.py的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__))

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

这里有一个简单的解决方案,它使用对
覆盖率
可执行文件的子流程调用。我假设您有一个名为
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命令了。