Để đưa ra một ví dụ hơi khó hiểu, giả sử tôi muốn kiểm tra rằng một hàm trả về hai số và số thứ nhất nhỏ hơn số thứ hai:
def test_length():
result = my_function()
assert len(result) == 2
def test_order()
a, b = my_function()
assert a < b
Ở đây, nếu test_length
thất bại, thì test_order
cũng sẽ thất bại. Nó là một thực hành tốt nhất để viết test_length
, hoặc bỏ qua nó?
EDIT: lưu ý rằng trong tình huống này, cả hai bài kiểm tra hầu hết đều độc lập với nhau, mỗi bài kiểm tra có thể được chạy riêng rẽ hoặc chúng có thể được chạy theo thứ tự ngược lại, điều này không thành vấn đề. Vì vậy, không có câu hỏi trước đây
- Tôi nên kiểm tra chức năng của một chức năng sử dụng các chức năng khác trong đó như thế nào?
- Tôi có cần kiểm tra đơn vị nếu tôi đã có kiểm tra tích hợp không?
- Làm cách nào để cấu trúc các bài kiểm tra trong đó một bài kiểm tra là một thiết lập của bài kiểm tra khác?
- Làm thế nào để quản lý sự phụ thuộc thành công giữa các bài kiểm tra đơn vị
là một bản sao của một ở trên.
A
các cuộc gọi B
và trả về cùng một kết quả, bạn nên kiểm tra cả hai A
và B
". Đây là nhiều hơn về các bài kiểm tra chồng chéo thay vì (các) chức năng được kiểm tra. (Mặc dù nó khó hiểu vì chúng hiện đang được đặt tên).
lambda: type('', (), {'__len__': lambda self: 2})()
sẽ vượt qua hàm thứ nhất, nhưng không phải hàm thứ hai.