我有这个普通的香草单元测试,它按预期工作,只要我省略构造函数。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