下面是代碼的被測人爲例如:
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
升起,我沒有測試的情況下?
您可以爲IndexError創建一個不同的塊。我認爲覆蓋範圍只是計算哪些行已被執行。 –