Tôi đang cố gắng làm một bài kiểm tra đơn giản trong Python bằng cách sử dụng unittest, để xem nếu một lớp ném một ngoại lệ nếu nó nhận được một đầu vào không phù hợp cho hàm tạo. Lớp trông như thế này:Kiểm tra bằng Python - cách sử dụng assertRaises trong thử nghiệm bằng cách sử dụng unittest?
class SummaryFormula:
def __init__(self, summaryFormula):
self.atoms = {}
for atom in re.finditer("([A-Z][a-z]{0,2})(\d*)", summaryFormula):
symbol = atom.group(1)
count = atom.group(2)
if pocet != "":
self.atoms[ symbol] = int(count)
else:
self.atoms[ symbol] = 1
thử nghiệm của tôi là như sau:
class ConstructorTestCase(unittest.TestCase):
def testEmptyString(self):
self.assertRaises(TypeError, ukol1.SummaryFormula(), "testtest")
if __name__ == '__main__':
unittest.main()
Tất cả tôi muốn là thử nghiệm thất bại, có nghĩa là ngoại trừ đầu vào không phù hợp với nhà xây dựng không được xử lý.
Thay vào đó, tôi gặp lỗi: __init__() takes exactly 2 arguments (1 given)
.
Tôi đang thiếu gì? Đối số thứ hai tôi nên chỉ định là gì?
Ngoài ra, loại Lỗi nào tôi nên sử dụng để xử lý ngoại lệ mà đầu vào không khớp với regexp của tôi được chuyển cho hàm tạo?
Cảm ơn bạn, Tomas
tôi không thể chạy mã trực tiếp vì có là lỗi cú pháp gần vòng lặp. Bạn có thể sửa nó. – pyfunc
Tôi nghĩ rằng thụt đầu dòng xung quanh cho vòng lặp là không chính xác – pyfunc
@pyfunc: Xin lỗi về điều đó. Sửa chữa nó. –