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

时间:2018-09-21 11:54:30

标签: 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=Calculator()

    def test_sum(self):
        answer=self.cals.sum(2,4)
        self.assertEqual(answer,6)

现在,我要检查此代码的代码覆盖率。我没有得到如何在PyCharm IDE中获取覆盖率报告。任何人,如果您知道如何获得整个项目的代码覆盖率,请进行指导

2 个答案:

答案 0 :(得分:1)

您可以设置Shell脚本并通过配置运行它。

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

/project
  /src
    main.py
  /test
    test_something.py

...此shell脚本将针对/test目录中的源文件运行/src目录中的所有测试,并打开具有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命令的./testcoverage run参数。

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

将外壳程序脚本另存为test_coverage.sh(或任何您想命名的脚本),并将其放在根/project文件夹中。然后在PyCharm中添加Shell脚本运行配置以及该文件的脚本路径。

PyCharm Run Configuration

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

答案 1 :(得分:0)

您可以只使用Coverage.py。 只需pip install coverage并在您的test.py或main.py上添加main方法并运行它即可。

例如,添加到test.py,

if __name__ == '__main__':
    unittest.main()

然后在终端上运行

coverage test.py