PyCharm:社区版的覆盖范围?

gue*_*tli 9 code-coverage pycharm

AFAIK 功能“测试覆盖率”仅在专业版(代码覆盖率)中可用。

如何使用 PyCharm 社区版本查看我的测试的代码覆盖率?

Gio*_*ano 15

正如您已经发现的,测试覆盖功能仅在专业 PyCharm 版本中可用。

可以做的是使用执行测试套件覆盖的外部 python 包。这个包被命名为coverage
您可以使用以下命令轻松安装它:

pip install coverage
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过 PyCharm 终端直接使用它(确保解释器是正确的)。

这是一个简单的例子:
假设你有一个这样的项目结构

- project_name
    - src
        - some_code.py
    - unittests
        - test_1.py
        - test_2.py  
Run Code Online (Sandbox Code Playgroud)

为了运行所有 unittests 文件夹,您必须在 PyCharm 终端中输入以下命令:

coverage run --source=./unittests -m unittest discover -s unittests/ && coverage report
Run Code Online (Sandbox Code Playgroud)

请注意,在此示例中,我从 project_name 目录启动命令。

这样,将运行单元测试并显示覆盖率。

另一个有趣的选择是创建 HTML 报告。如果您有兴趣,请使用以下命令

coverage run --source=./unittests -m unittest discover -s unittests/ && coverage html
Run Code Online (Sandbox Code Playgroud)

这样,将添加一个新文件夹,其中包含 html 报告的所有源。

覆盖包有很多选项,可以用不同的方式自定义它,所以请查看文档

  • 附带说明一下,“unittest discovery”是一个关键字短语,因此您不应更改它。您需要更改以匹配测试目录的命令的唯一部分是“--source=./unittests”和“-s unittests/”。 (2认同)

Gle*_*ruk 7

您可以为此使用PyCrunch插件。

用户界面

作为奖励,当受影响的文件发生变化时,测试将重新运行。

披露:我是这个插件的作者

  • 很抱歉给您带来麻烦,很难听到您正在经历这样的挫败感。一般来说,它适用于我的所有项目(除了 async-io 测试),并且需要以更复杂的方式构建代码才能满足该工具的要求。.Net 替代品 Ncrunch 也是如此,我花了几天时间才在一个复杂的项目上第一次设置它。我认为在没有具体细节的情况下,这不是提供有关非商业产品反馈的正确方式。这对我和其他用户没有帮助。相反,最好在 github 上开票或提交 PR。添加了免责声明。 (2认同)