代码之家  ›  专栏  ›  技术社区  ›  AntoineLB

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

  •  -2
  • AntoineLB  · 技术社区  · 6 年前

    下面是一个测试:

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

    我的问题很简单:

    如果我继续报道,威尔 my_function 是否包括(考虑到我的考试被跳过)?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  2
  •   Martijn Pieters    6 年前

    不执行跳过的测试。定义中不包括未执行的代码。

    演示;给出 coverage_demo 模块:

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

    和A 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 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() 功能。