IDEA显示未覆盖的分支可以';无法访问(python)
考虑到此功能的测试覆盖范围:IDEA显示未覆盖的分支可以';无法访问(python),python,intellij-idea,code-coverage,Python,Intellij Idea,Code Coverage,考虑到此功能的测试覆盖范围: 1 def func_to_test(param): 2 3 if param == 'foo': 4 return 'bar' 5 6 return param 这两个单元测试: def test_given_param_is_foo_it_returns_bar(self): result = func_to_test('foo') self.assertEquals(result, 'b
1 def func_to_test(param):
2
3 if param == 'foo':
4 return 'bar'
5
6 return param
这两个单元测试:
def test_given_param_is_foo_it_returns_bar(self):
result = func_to_test('foo')
self.assertEquals(result, 'bar')
def test_given_param_is_not_foo_it_returns_the_param(self):
result = func_to_test('something else')
self.assertEquals(result, 'something else')
IDEA中的coverage视图显示了被测函数的所有行,但在第3行(带有if
的行)中显示了以下内容:
Line was hit
Line 2 didn't jump to line 4,6
在查看了其中的多个案例后,我的印象是覆盖工具希望执行if
块,然后代码执行继续在块下面执行。但是,如果if
块包含必须命中的return
语句,则这是不可能的
我是否误解了该消息,或者是否需要配置其他任何东西才能正确检测到该消息
在my
coverage.rc
中,我有branch=on
。但是仅仅禁用它就会导致可访问的分支未被检测为“未命中”。我看不到相同的结果。当我运行它时,我得到100%的语句和分支。也许你的代码有些不同
以下是我的测试运行:
$ cat tryit.py
def func_to_test(param):
if param == 'foo':
return 'bar'
return param
import unittest
class TestIt(unittest.TestCase):
def test_given_param_is_foo_it_returns_bar(self):
result = func_to_test('foo')
self.assertEquals(result, 'bar')
def test_given_param_is_not_foo_it_returns_the_param(self):
result = func_to_test('something else')
self.assertEquals(result, 'something else')
$ coverage run --branch --source=. -m unittest tryit
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
$ coverage report -m
Name Stmts Miss Branch BrPart Cover Missing
------------------------------------------------------
tryit.py 12 0 2 0 100%
$