Python : 是使用跳过测试的覆盖率

Python : is coverage using skipped test

这是一个测试:

@skip("my test is skipped")
def test_coverage():
    my_function()

我的问题很简单:

如果我 运行 我的覆盖范围,my_function 是否会覆盖(考虑到我的测试被跳过)?

谢谢!

不执行跳过的测试。根据定义,未执行的代码不包括在内。

演示;给定一个 coverage_demo 模块:

def foo():
    var = "This function has is covered"

def bar():
    var = "This function is not"

和一个 coverage_demo_tests.py 文件:

from unittest import TestCase, skip
import coverage_demo

class DemoTests(TestCase):
    def test_foo(self):
        coverage_demo.foo()

    @skip("No bar for us today")
    def test_bar(self):
        import coverage_demo
        coverage_demo.bar()

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

运行 这个覆盖率表明 coverage_demo 中的第 5 行没有被执行:

$ coverage run coverage_demo_tests.py
s.
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK (skipped=1)
$ coverage report --include=coverage_demo\.py -m
Name               Stmts   Miss  Cover   Missing
------------------------------------------------
coverage_demo.py       4      1    75%   5

顶层的def语句总是被执行,但是第5行是bar()函数中唯一的一行。