问题:
以下是被测试代码的人工示例:
from datetime import datetime
def f(s):
try:
date = s.split(":")[1]
return datetime.strptime(date, "%Y%m%d")
except (ValueError, IndexError) as e:
# some code here
raise
这是我目前拥有的一组测试:
from datetime import datetime
import unittest
from test_module import f
class MyTestCase(unittest.TestCase):
def test_valid_date(self):
self.assertEqual(f("1:20130101"), datetime(2013, 1, 1))
def test_invalid_date(self):
self.assertRaises(ValueError, f, "1:invalid")
测试通过,如果我使用--branch
标志运行覆盖率,我将获得100%的行和分支覆盖率:
$ coverage run --branch -m unittest test
..
----------------------------------------------------------------------
Ran 2 tests in 0.003s
OK
$ coverage report
Name Stmts Miss Branch BrPart Cover
--------------------------------------------
test_module.py 7 0 0 0 100%
--------------------------------------------
TOTAL 7 0 0 0 100%
需要注意的是,当前测试仅检查两种情况——当没有异常抛出时和当引发 ValueError
异常时。
问题:
coverage
是否有一种报告方式可以告诉我没有测试当IndexError
被引发的情况吗?