2010-09-01 39 views

Trả lời

6

assert result.file == file, "%s != %s" % (result.file, file,)

Đó là lý do xấu xí self.assert<Foo> phương pháp đã được giới thiệu trong unittest.TestCase thay vì tốt đẹp và ngắn khẳng định: self.assert<Foo> phương pháp biết làm thế nào để hiển thị các thông điệp thất bại.

Bằng cách này, tôi nghĩ rằng mũi làm một số ma thuật đen như vậy trong trường hợp đơn giản

assert a == b

sẽ hiển thị thông báo lỗi có ý nghĩa.

+0

Cảm ơn, tôi nên sử dụng self.assert. Bạn có thể cho phép Nose hiển thị thêm thông tin với -d. Nó sẽ hiển thị loại nhưng không hiển thị giá trị thực. – Pickels

+1

Chỉ cần nhận thấy lý do tại sao bạn nói rằng họ đã xấu xí. Dấu ngoặc đơn và không == ... yuck. – Pickels

+0

@Pickels Ngày nay bạn có thể sử dụng [pytest] (http://doc.pytest.org/en/latest/). Nó khuyến khích khẳng định trần nhưng thực hiện một số phân tích mã để làm cho đầu ra thất bại, vì vậy bạn có được tốt nhất của cả hai thế giới. – augurar

22

Bạn nên chạy nosetests -d điều này sẽ hiển thị các giá trị của các đối tượng không so sánh trong khẳng định.

+2

Đây phải là câu trả lời được chấp nhận. – ford

+0

Không, nó vẫn là "đối tượng .uidNumber == 1001" thay vì một cái gì đó như "dự kiến ​​1001, có 1002" – badbishop

1

Một khả năng khác: xác định chức năng của riêng bạn mà hiện các trick:

def assert_eq(obt, exp): 
    assert obt==exp, "\n*Expected:\n%s\n*Obtained:\n%s" % (exp, obt) 

Bạn có thể gọi nó là thay vì assert:

assert_eq (self.data['SQ'].code, "SQ") 

Và đây trả về lỗi đẹp này:

AssertionError

+0

Siêu! Tôi tự hỏi, nếu bạn thêm một tham số thứ ba - mô tả thử nghiệm, đó là - bạn thậm chí không cần phải xác định một phương pháp riêng biệt cho mỗi bài kiểm tra đơn giản, phải không? Về cơ bản, nó sẽ trông giống như phương thức ok() của Perl từ Test :: More. – badbishop

+0

@badbishop Phương pháp tôi mô tả có thể hoạt động cho tất cả các bài kiểm tra. Nhưng có, nó có thể được tùy chỉnh bằng cách thêm một tham số thứ ba với thông điệp (có thể là tùy chọn với thông báo mặc định là thông điệp tôi mô tả). –

Các vấn đề liên quan