Tôi có một nhóm các trường hợp thử nghiệm mà tất cả phải có chính xác cùng một thử nghiệm được thực hiện, dọc theo dòng "Có phương pháp x trả về tên của một tệp hiện có?"Làm cách nào để thêm phương pháp thử nghiệm vào một nhóm các lớp có nguồn gốc từ Django TestCase?
Tôi nghĩ rằng cách tốt nhất để làm điều đó sẽ là một lớp cơ sở bắt nguồn từ TestCase mà tất cả chúng đều chia sẻ và chỉ cần thêm bài kiểm tra vào lớp đó. Thật không may, khuôn khổ thử nghiệm vẫn cố gắng chạy thử nghiệm cho lớp cơ sở, nơi nó không có ý nghĩa.
class SharedTest(TestCase):
def x(self):
...do test...
class OneTestCase(SharedTest):
...my tests are performed, and 'SharedTest.x()'...
Tôi cố gắng để hack trong một kiểm tra đơn giản bỏ qua kiểm tra nếu nó được gọi là trên một đối tượng của lớp cơ sở chứ không phải là một lớp học có nguồn gốc như thế này:
class SharedTest(TestCase):
def x(self):
if type(self) != type(SharedTest()):
...do test...
else:
pass
nhưng đã nhận lỗi này:
ValueError: no such test method in <class 'tests.SharedTest'>: runTest
Trước tiên, tôi muốn có bất kỳ đề xuất thanh lịch nào để thực hiện việc này. Thứ hai, mặc dù tôi không thực sự muốn sử dụng loại() hack, tôi muốn hiểu tại sao nó không hoạt động.
@jivanamara: Có một cách để tránh phương pháp kiểm tra siêu lớp khỏi tính _and_ để viết phương thức thử mà không có kiểm tra 'if getattr (...)'. Xem bản cập nhật thứ hai cho câu trả lời của tôi. –