如何在 Python 中获得 100% 的代码覆盖率?

030*_*030 2 python tdd code-coverage coverage.py python-coverage

学习.py

def multiply(a, b):
    return a * b

def addition(a, b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

test_learning.py

import unittest

from learning import *

class Test(unittest.TestCase):
    def test_multiply(self):
        self.assertEqual( multiply(3,4), 12)

    def test_addition(self):
        self.assertEqual( addition(5,10), 15)       

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

50% 的代码覆盖率

虽然两种方法都经过测试,但是代码覆盖率都是50%

C:\>coverage run learning.py test_learning.py

C:\>coverage report

Name       Stmts   Miss  Cover
------------------------------
learning       4      2    50%
Run Code Online (Sandbox Code Playgroud)

Woo*_*ble 5

您想要的覆盖命令是:

coverage run test_learning.py
Run Code Online (Sandbox Code Playgroud)

您正在做的是learning.py使用参数运行test_learning.py,它只执行 2 个def语句,从不运行测试(或执行 2 个定义函数的内容)。