Tôi tự hỏi những kỹ thuật mọi người sử dụng để đơn giản hóa 'kích thước' của mã được sử dụng để kiểm tra đơn vị. Ví dụ tôi đã cố gắng để sắp xếp một đối tượng của lớp và kiểm tra đối tượng marshal'ed (nhưng điều này giả định nguyên soái đang hoạt động chính xác).Có một phong cách tối thiểu cho các unittests bằng Python không?
Hãy xem xét các lớp
import unittest
class Nums(object):
def __init__(self, n1_, n2_, n3_):
self.n1, self.n2, self.n3 = n1_, n2_, n3_
def marshal(self):
return "n1 %g, n2 %g, n3 %g"%(self.n1,self.n2,self.n3)
và sau đó marshaling dựa, danh sách dựa, và kiểm tra bình thường
class NumsTests(unittest.TestCase):
def setUp(self):
self.nu = Nums(10,20,30)
def test_init1(self):
self.assertEquals(self.nu.marshal(),"n1 %g, n2 %g, n3 %g"%(10,20,30))
def test_init2(self):
self.assertEquals([self.nu.n1,self.nu.n2,self.nu.n3],[10,21,31])
def test_init3(self):
self.assertEquals(self.nu.n1,10)
self.assertEquals(self.nu.n2,21)
self.assertEquals(self.nu.n3,31)
đó cung cấp cho các lỗi sau đây (kể từ đó, 20! = 21 và 30! = 31 , thử nghiệm của tôi có khởi chạy không tốt hoặc các điều kiện thử nghiệm là sai)
AssertionError: 'n1 10, n2 20, n3 30' != 'n1 10, n2 21, n3 31'
AssertionError: [10, 20, 30] != [10, 21, 31]
AssertionError: 20 != 21
Lần đầu tiên và lần thứ hai thông điệp ror rất khó hiểu (vì bạn phải phân tích chuỗi hoặc danh sách). Tuy nhiên, kỹ thuật thứ 3 nhanh chóng phát nổ trong số lượng mã được sử dụng để kiểm tra các đối tượng phức tạp.
Có cách nào tốt hơn để đơn giản hóa các bài kiểm tra đơn vị mà không tạo thông báo lỗi khó không? Và, không phụ thuộc vào tính xác thực của một chức năng nguyên soái?
[thay đổi test_marshal
-marshal
]
Bạn không nên có bất kỳ mã thử nghiệm nào trong hệ thống của mình đang được thử nghiệm (trong trường hợp này là lớp 'Nums'). – Skilldrick
@Skilldrick Tôi không biết "mã thử nghiệm trong hệ thống của bạn đang thử nghiệm" nghĩa là gì. –
mã kiểm tra 'Nums' phải nằm trong một tệp riêng biệt từ chính lớp' Nums'. Vì vậy, hãy di chuyển 'test_marshal' sang một tệp khác (tức là tệp thử nghiệm của bạn). –