問題:ここ複数の例外とコードカバレッジユニットテストパイソン
は、検査下にあるコードの人工的な例である:ここ
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%の行を取得します。分岐カバレッジは: - スローされた例外が存在しない、と提起ValueError
例外があるとき
$ 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%
はしかし、テストは現在、唯一の2例を調べることに注意してください。
質問:IndexError
が発生したとき、私はケースをテストしていないことを報告するcoverage
ための方法が
ありますか?
IndexErrorとは異なるブロックを使用できます。私は、カバレッジは実行された行を数えていると思います。 –