为什么 Python 3.8.3 禁用单元测试覆盖率?

Rei*_*ien 4 code-coverage pycharm python-3.x python-unittest

我有这个版本的Python:

3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)]
Run Code Online (Sandbox Code Playgroud)

在 Windows 10 上运行 PyCharm CE 2020.1.1。使用非常简单unittest

3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)]
Run Code Online (Sandbox Code Playgroud)

我可以运行python -m coverage run -m unittest,它会完成并生成一个.coverageSQLite 文件;我可以从 IDE 运行测试,生成测试结果树;但运行/运行覆盖范围显示为灰色,没有任何解释。

我已按照(相当分散的)PyCharm 文档进行设置/构建、执行、部署激活覆盖视图启用、在将覆盖范围应用到编辑器之前显示选项,但这没有帮助。

为什么覆盖范围呈灰色,如何修复?

MrB*_*men 7

不幸的是,PyCharm 社区版中不提供 IDE 覆盖支持,这可以在版本功能中看到。

您必须像往常一样在命令行上运行覆盖范围,如本答案中所示。

您还可以使用一些包装器来创建和打开 HTML 报告。可以在这篇博客文章中找到使用 pytest 进行覆盖的此类包装器的示例。这是该博客中使用的脚本(请注意,我更改了覆盖路径以适用于当前版本):

import os
import subprocess
import webbrowser


def main():
    subprocess.call(['coverage', 'erase'])    
    subprocess.call(['coverage', 'run', '--module', 'pytest'])
    subprocess.call(['coverage', 'html'])
    webbrowser.open("file://" + os.getcwd() + "/htmlcov/index.html", new=2)

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)