2013-09-30 13 views
14

Đối với đoạn mã sau:Python unittest.TestCase đối tượng không có thuộc tính 'runTest'

import unittest 

class Test(unittest.TestCase): 
    def test1(self): 
     assert(True == True) 

if __name__ == "__main__": 
    suite = unittest.TestSuite() 
    suite.addTest(Test()) 
    unittest.TextTestRunner().run(suite) 

Sử dụng python3 để thực hiện nó, các lỗi sau được nâng lên:

Traceback (most recent call last): 
    File "test.py", line 10, in <module> 
    unittest.TextTestRunner().run(suite) 
    File "/usr/lib/python3.2/unittest/runner.py", line 168, in run 
    test(result) 
    File "/usr/lib/python3.2/unittest/suite.py", line 67, in __call__ 
    return self.run(*args, **kwds) 
    File "/usr/lib/python3.2/unittest/suite.py", line 105, in run 
    test(result) 
    File "/usr/lib/python3.2/unittest/case.py", line 477, in __call__ 
    return self.run(*args, **kwds) 
    File "/usr/lib/python3.2/unittest/case.py", line 408, in run 
    testMethod = getattr(self, self._testMethodName) 
AttributeError: 'Test' object has no attribute 'runTest' 

Nhưng unittest.main() công trình.

Trả lời

12

Bạn cần gọi một bộ nạp thử nghiệm:

if __name__ == "__main__": 
    suite = unittest.defaultTestLoader.loadTestsFromTestCase(Test) 
    unittest.TextTestRunner().run(suite) 
0

Kiểm tra thực tế cho bất kỳ lớp con TestCase nào được thực hiện theo phương pháp runTest(). Đơn giản chỉ cần thay đổi mã của bạn để:

class Test(unittest.TestCase): 
    def runTest(self): 
     assert(True == True) 
+1

Có, nó hoạt động. Nhưng có cách nào để làm cho nó hoạt động mà không thay đổi lớp Test? @ bhajun-singh. –

+1

Chỉ cần nói 'pass' thay vì' assert (True == True) ' –

6

Bạn phải ghi rõ tên phương pháp thử nghiệm (test1):

import unittest 

class Test(unittest.TestCase): 
    def test1(self): 
     assert(True == True) 

if __name__ == "__main__": 
    suite = unittest.TestSuite() 
    suite.addTest(Test('test1')) # <---------------- 
    unittest.TextTestRunner().run(suite) 

Hoặc, nếu bạn muốn chạy tất cả các kiểm tra trong tệp, Chỉ cần gọi unittest.main() là đủ:

if __name__ == "__main__": 
    unittest.main() 
Các vấn đề liên quan