最开始的代码为:
import unittest class TestCase(unittest.TestCase): def __init__(self): self.test='test' def test_test(self): print('1') if __name__ == '__main__': unittest.main()执行后,报错
TypeError: __init__() takes 1 positional argument but 2 were given在子类中加了__init__是重写了父类的初始化方法。 父类的def init(self, methodName=‘runTest’):是传了2个参数,而我传了1个值, 父类方法:
def __init__(self, methodName='runTest'): """Create an instance of the class that will use the named test method when executed. Raises a ValueError if the instance does not have a method with the specified name. """ self._testMethodName = methodName self._outcome = None self._testMethodDoc = 'No test' try: testMethod = getattr(self, methodName) except AttributeError: if methodName != 'runTest': # we allow instantiation with no explicit method name # but not an *incorrect* or missing method name raise ValueError("no such test method in %s: %s" % (self.__class__, methodName)) else: self._testMethodDoc = testMethod.__doc__ self._cleanups = [] self._subtest = None # Map types to custom assertEqual functions that will compare # instances of said type in more detail to generate a more useful # error message. self._type_equality_funcs = {} self.addTypeEqualityFunc(dict, 'assertDictEqual') self.addTypeEqualityFunc(list, 'assertListEqual') self.addTypeEqualityFunc(tuple, 'assertTupleEqual') self.addTypeEqualityFunc(set, 'assertSetEqual') self.addTypeEqualityFunc(frozenset, 'assertSetEqual') self.addTypeEqualityFunc(str, 'assertMultiLineEqual')在__init__参数中添加method=‘runtest’,在__init__方法内添加:super(TestCase,self).init(methodName)
class TestCase(): def __init__(self,methodName='runTest'): super(TestCase,self).__init__(methodName) def test_test(self): print('1') if __name__ == '__main__': unittest.main()