2011-12-13 23 views
6

Tôi đang sử dụng expectedFailure vì có lỗi mà tôi muốn ghi lại mà tôi không thể khắc phục ngay bây giờ, nhưng muốn quay lại trong tương lai. Sự hiểu biết của tôi về expectedFailure là nó sẽ đếm thử nghiệm như được thông qua nhưng trong bản tóm tắt nói rằng có x số thất bại dự kiến ​​(tương tự như cách nó hoạt động với tipped bỏ qua).expectedFailure được tính là lỗi thay vì được thông qua

Tuy nhiên, khi tôi chạy bộ kiểm tra của tôi, tôi nhận được như sau:

$ ./manage.py test eav.QueryTest 
Creating test database for alias 'default'... 
.EE 
====================================================================== 
ERROR: test_q_object_with_exclude (eav.tests.managers.QueryTest) 
---------------------------------------------------------------------- 
_ExpectedFailure 

====================================================================== 
ERROR: test_q_objects_unioned (eav.tests.managers.QueryTest) 
---------------------------------------------------------------------- 
_ExpectedFailure 

---------------------------------------------------------------------- 
Ran 3 tests in 1.095s 

FAILED (errors=2) 
Destroying test database for alias 'default'... 

Tôi không chắc chắn nếu điều này nằm với Á hậu kiểm tra hoặc một cái gì đó của Django tôi đang làm sai.

@unittest.expectedFailure 
def test_q_object_with_exclude(self): 
    # Everyone except Bob 
    q_set = eav_m.Process.objects.exclude(
     Q(eav__details__city__contains='Y')) 
    self.assertEqual(q_set.count(), 4) 

Trả lời

7

Hiểu biết của bạn về expectedFailure là đúng. Vấn đề của bạn là những bài kiểm tra đó không thất bại mà họ đưa ra một ngoại lệ mà không giống như thất bại.

Trình trang trí bạn đang tìm kiếm là skip.

+1

@JonathanHartley Không hẳn. Các thử nghiệm không thành công theo 2 cách. Nếu họ thất bại vì một số khẳng định thất bại thì đó là trạng thái "FAIL" nhưng nếu có sự cố như một ngoại lệ được nêu ra, thì đó là trạng thái "L ERI". expectedFailure có nghĩa là bạn mong đợi một thử nghiệm thất bại nhưng điều đó không có nghĩa là bạn đang mong đợi nó sụp đổ. – binW

0

Không, thất bại dự kiến ​​không có để giúp bạn viết kiểm tra âm, sử dụng self.assertNotEqual cho điều đó. expectedFailure được sử dụng để đánh dấu một bài kiểm tra mà bạn biết là bị hỏng và bạn thừa nhận thực tế đó. Bởi không thất bại nó nói rằng sự thừa nhận của bạn là không hợp lệ.

+0

Cảm ơn bạn đã trả lời nhưng tôi không cố viết một bài kiểm tra tiêu cực. Trong mã mẫu ở trên 'self.assertEqual (q_set.count(), 4)' là đúng. Số đếm phải là 4, nhưng có một lỗi khiến nó trả về một giá trị khác và không thành công. Do đó cần sử dụng 'expectedFailure'. – Jashugan

+0

Tôi downvote phản ứng này bởi vì nó không giải quyết được vấn đề. – Stan

0

Bạn nên xem SO question vì đây không phải là hành vi phù hợp. Thử nghiệm với expectedFailure trang trí should not be counted as a failure nếu thử nghiệm không thành công.

+1

Cảm ơn những người đứng đầu. Tôi chưa thử xây dựng lại mọi thứ từ đầu. Tuy nhiên, tôi đã chạy 'sudo find/opt -type f -regex. * \. Pyc -delete' trên lý thuyết rằng có thể đã có các tệp pyc được biên dịch gây ra sự cố. Thật không may là không giải quyết được vấn đề. – Jashugan

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