Vấn đề:Nhiều trường hợp ngoại lệ và mã số bảo hiểm khi kiểm tra đơn vị python
Dưới đây là một ví dụ nhân tạo của mã dưới kiểm tra:
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
Dưới đây là một loạt các thử nghiệm Tôi hiện có:
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")
Bài kiểm tra trôi qua và nếu tôi chạy vùng phủ sóng với cờ --branch
, tôi sẽ nhận được 100% dòng và bảo hiểm chi nhánh:
$ 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%
Tuy nhiên, lưu ý rằng các thử nghiệm hiện kiểm tra chỉ có hai trường hợp - khi không có ngoại lệ ném, và có một ngoại lệ ValueError
nâng lên.
Câu hỏi đặt ra:
Có cách nào cho coverage
mừng thông báo rằng tôi đã không kiểm tra một trường hợp khi IndexError
được nâng lên?
Bạn có thể có một khối ngoại trừ khác cho IndexError. Tôi nghĩ rằng phạm vi bảo hiểm chỉ đếm những dòng đã được thực hiện. –