Đây là sự cố xảy ra khi thực hiện một thử nghiệm duy nhất có nhiều chế độ lỗi độc lập do có nhiều luồng đầu ra. Tôi cũng muốn hiển thị các kết quả của việc xác nhận dữ liệu trên tất cả các chế độ đó, bất kể những gì không thành công trước. Tính không nhất quán của Python không có tính năng nào ngoài việc sử dụng một Suite để thể hiện một phép thử duy nhất, điều không thể chấp nhận được vì thử nghiệm đơn của tôi luôn cần phải chạy như một đơn vị duy nhất; nó không nắm bắt được bản chất của sự vật.Làm cách nào để xử lý nhiều xác nhận trong một Python đơn lẻ?
Ví dụ thực tế là thử nghiệm đối tượng cũng tạo nhật ký. Bạn muốn khẳng định đầu ra của các phương thức của nó, nhưng bạn cũng muốn khẳng định đầu ra bản ghi. Hai kết quả đầu ra yêu cầu các phép thử khác nhau, có thể được biểu diễn gọn gàng khi hai trong số các chứng khoán khẳng định các biểu thức, nhưng bạn cũng không muốn thất bại của một để ẩn sự thất bại có thể của bên kia trong thử nghiệm. Vì vậy, bạn thực sự cần phải kiểm tra cả hai cùng một lúc.
Tôi đã trộn lẫn với nhau tiện ích nhỏ hữu ích này để giải quyết vấn đề của tôi.
def logFailures(fnList):
failurelog = []
for fn in fnList:
try:
fn()
except AssertionError as e:
failurelog.append("\nFailure %d: %s" % (len(failurelog)+1,str(e)))
if len(failurelog) != 0:
raise AssertionError(
"%d failures within test.\n %s" % (len(failurelog),"\n".join(failurelog))
)
nào được sử dụng như sau:
def test__myTest():
# do some work here
logFailures([
lambda: assert_(False,"This test failed."),
lambda: assert_(False,"This test also failed."),
])
Kết quả là logFailures() sẽ nâng cao một ngoại lệ có chứa một bản ghi của tất cả các khẳng định đã được nêu ra trong các phương pháp trong danh sách.
Câu hỏi: Trong khi thực hiện công việc này, tôi tự hỏi liệu có cách nào tốt hơn để xử lý việc này, ngoài việc phải tạo ra các dãy kiểm tra lồng nhau và vv?
"bạn cũng không muốn thất bại của một để ẩn sự cố có thể của người khác trong thử nghiệm". Nếu bạn muốn thử nghiệm hai thứ khác nhau, hãy thử hai bài kiểm tra khác nhau! –
"bạn cũng không muốn thất bại của một để ẩn sự thất bại có thể của người khác trong thử nghiệm". Có - Tôi muốn: đây là những bài kiểm tra đơn vị. Nếu một thử nghiệm thất bại, sửa lỗi và chạy lại các thử nghiệm. –