Python 覆盖范围 - 不覆盖函数内容,仅覆盖定义

Sin*_*eer 5 python testing code-coverage coverage.py pytest

我正在用来coverage.py测试我的代码覆盖率。然而,当我打电话时,我的测试正在通过

coverage run -- [script].py -m [test_script].py
Run Code Online (Sandbox Code Playgroud)

并生成一份报告,表明

<line hits="1" number="5"/>
<line hits="0" number="6"/>
<line hits="0" number="7"/>
<line hits="0" number="8"/>
Run Code Online (Sandbox Code Playgroud)

其中第5、6、7、8行如下:

def __init__(self, data):
        self.left = None
        self.right = None
        self.data = data
Run Code Online (Sandbox Code Playgroud)

再举个例子:

我的测试代码:

def test_arb():
assert tree.inc(3) == 4
Run Code Online (Sandbox Code Playgroud)

功能

def inc(x):
    return x+1
Run Code Online (Sandbox Code Playgroud)

以及报告上的结果

<line hits="1" number="48"/>
<line hits="0" number="49"/>
Run Code Online (Sandbox Code Playgroud)

我花了几天时间研究这个问题,但似乎找不到直接的答案。有人可以帮忙吗?这可能是一个显而易见的解决方案,但我是 Python 和测试的初学者。

小智 1

根据您的coverage命令,如果使用unittest模块,请确保您[test_script].py

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

(或者 pytest 中的替代方案)