我有這個普通的香草單元測試,它按預期工作,只要我省略構造函數。Python單元測試:具有自己的構造函數的測試用例類在標準庫中失敗
import sys
import unittest
class Instance_test(unittest.TestCase):
def __init__(self):
super(Instance_test, self).__init__()
self.attribute = "new"
def test_something(self):
pass
def test_other(self):
self.assertTrue(True)
pass
def setUp(self):
pass
def tearDown(self):
pass
def suite():
return unittest.makeSuite(Instance_test, "test")
def main():
runner = unittest.TextTestRunner(sys.stdout)
runner.run(suite())
if __name__ == "__main__":
main()
有了構造函數中得到這個回溯:
Traceback (most recent call last): File "f:\gt\check.py", line 31, in main() File "f:\gt\check.py", line 28, in main runner.run(suite()) File "f:\gt\check.py", line 24, in suite return unittest.makeSuite(Instance_test, "test") File "C:\Python34\lib\unittest\loader.py", line 374, in makeSuite testCaseClass) File "C:\Python34\lib\unittest\loader.py", line 70, in loadTestsFromTestCase loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames)) File "C:\Python34\lib\unittest\suite.py", line 24, in __init__ self.addTests(tests) File "C:\Python34\lib\unittest\suite.py", line 60, in addTests for test in tests: TypeError: __init__() takes 1 positional argument but 2 were given
什麼是錯的,我怎麼回事,可能有一箇中央屬性不同test_xxx方法來共享?
你正在爲一個沒有處理參數的方法進行子類化。你需要讓'__init__'接受任意參數(通常是'* args,** kwargs')並將它們傳遞給超類的實現。 – jonrsharpe
@jonrsharpe:Yesss,謝謝 – guidot