2013-02-08 23 views
19

Tôi đang thực hiện một số unittests với python và một số kiểm tra trước khi kiểm tra trong setUpClass. Làm thế nào tôi có thể ném một unitest-fail trong setUpClass, như ví dụ đơn giản sau:Làm thế nào để thất bại một python unittest trong setUpClass?

class MyTests(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls):  
     unittest.TestCase.fail("Test") 

    def test1(self): 
     pass 

if __name__ == '__main__': 
    unittest.main() 

cung cấp cho các lỗi TypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead).

Tôi hiểu lỗi tôi nhận được là không thành công là phương pháp thể hiện và tôi chưa có phiên bản MyClass. Sử dụng một thể hiện on-the-fly như

unittest.TestCase().fail("Test") 

cũng không hoạt động, như unittest.TestCase bản thân không có người kiểm tra. Bất kỳ ý tưởng làm thế nào để thất bại tất cả các bài kiểm tra trong MyClass, khi một số điều kiện trong setUpClass không được đáp ứng?

Câu hỏi tiếp theo: Có cách nào để xem các bài kiểm tra trong setUpClass không?

Trả lời

22

self.fail("test") đưa vào phương pháp dụ thiết lập của bạn thất bại tất cả các bài kiểm tra

Tôi nghĩ rằng cách dễ nhất để làm điều này ở cấp lớp là để thực hiện một biến lớp học nên cái gì như:

@classmethod 
def setUpClass(cls): 
    cls.flag = False 

def setUp(self): 
    if self.flag: 
     self.fail("conditions not met") 

Hy vọng điều này là những gì bạn muốn.

+0

tôi trong 'setUpClass', mà không phải là một thể hiện của' MyTest', vì vậy 'self' không được định nghĩa ở cấp độ này. 'cls.fail()' cũng không hoạt động. – Alex

+0

Rất tiếc, không thấy điều đó, cố định. – Raufio

22

Sử dụng một khẳng định đơn giản nên làm việc

assert False, "I mean for this to fail" 
+0

Tôi đang trong 'setUpClass' là một classmethod, vì vậy tôi KHÔNG có' self' ... – Alex

+0

Đơn giản 'assert' là một ý tưởng thực sự tốt ... – Alex

+0

mát mẻ, chấp nhận nếu thats những gì bạn đang tìm kiếm :) – Greg

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