如何在PyCharm for Python项目中获取代码覆盖率报告

如何在PyCharm for Python项目中获取代码覆盖率报告,python,pycharm,code-coverage,Python,Pycharm,Code Coverage,我用类似python的语言创建了一个简单的加法 [main.py] class Calculator: def sum(self,a,b): return a+b 我在[test.py]中编写了测试用例 from unittest import Testcase from main import Calculator class TestCalculator(TestCase): def setUp(self): self.calc=Cal

我用类似python的语言创建了一个简单的加法 [main.py]

class Calculator:

    def sum(self,a,b):
        return a+b
我在[test.py]中编写了测试用例

from unittest import Testcase
from main import Calculator

class TestCalculator(TestCase):

    def setUp(self):
        self.calc=Calculator()

    def test_sum(self):
        answer=self.cals.sum(2,4)
        self.assertEqual(answer,6)
现在我想检查这段代码的代码覆盖率。我不知道如何在PyCharm IDE中获取报道。任何人,如果您知道如何获得整个项目的代码覆盖率,请提供指导。 只需
pip install coverage
并在test.py或main.py上添加一个main方法并运行它

例如,添加到test.py

if __name__ == '__main__':
    unittest.main()
并在终端上运行

coverage test.py

您可以设置shell脚本并使用配置运行它

例如,假设这样的项目结构

/project
  /src
    main.py
  /test
    test_something.py
…此shell脚本将针对
/src
目录中的源文件运行
/test
目录中的所有测试,并打开包含HTML结果的浏览器:

# contents of test_coverage.sh
coverage erase
coverage run --source=./src -m unittest discover ./test
coverage report -m
coverage html
open ./htmlcov/index.html
此脚本是使用unittest为Mac编写的,但您可以为正在使用的任何操作系统和测试运行程序修改它。当然,您也可以修改它以运行您想要的任何命令。例如,如果不想生成或打开HTML结果,只需删除最后两行即可。如果项目结构看起来不同,请修改
覆盖率运行
命令的
--source=./src
/test
参数

此shell脚本应该从根
/project
文件夹运行。确保test.*.py文件中的导入语句与该文件夹相关。这在PyCharm中很容易被忽略,因为源目录可能会为您添加到PYTHONPATH中

将shell脚本另存为
test\u coverage.sh
(或您想命名的任何名称),并将其放入根
/project
文件夹中。然后在PyCharm中添加一个Shell脚本运行配置,并将脚本路径添加到该文件


当您在PyCharm中运行配置时,您应该在终端中获得一个报告,并且您的默认浏览器应该打开HTML报告(假设您使用上述命令)。

您使用PyCharm社区还是专业版?据我所知,代码覆盖率是PyCharm Professional的一项功能。请参阅:是的,我使用的是社区版。您需要像Rickys answer中那样手动执行此操作-社区版没有集成的IDE对代码覆盖率的支持。但是通过此操作,如果我有两个文件test1.py和test2.py,我可以一次测试一个文件,但不能测试整个项目的覆盖率报告。