unittest类型不能增加__init__()的问题

JeanLove 2018-05-13 02:40:32
我写了一个ut小代码,如下:

import unittest
class mytest(unittest.TestCase):
def setUp(self):
print 'setup'
pass
def tearDown(self):
print 'tearDown'
pass
def testTrue(self):
self.assertTrue(True)
if __name__=="__main__":
unittest.main()

没有问题,但是如果我增加一个__init__()函数,就会出错:

import unittest
class mytest(unittest.TestCase):
def __init__(self):
print '__init__'
def setUp(self):
print 'setup'
pass
def tearDown(self):
print 'tearDown'
pass
def testTrue(self):
self.assertTrue(True)
if __name__=="__main__":
unittest.main()

运行并提示错误:

File "C:\Python27\lib\unittest\loader.py", line 56, in loadTestsFromTestCase
loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
TypeError: __init__() takes exactly 1 argument (2 given)

可是到底错在哪里呢?
...全文
923 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
欢乐的小猪 2018-05-14
  • 打赏
  • 举报
回复
基类有两个参数。改后代码:
import unittest
class mytest(unittest.TestCase):
    def __init__(self,methodName='runTest'):
		super(mytest,self).__init__(methodName)
		print '__init__'
    def setUp(self):
        print 'setup'
        pass
    def tearDown(self):
        print 'tearDown'
        pass
    def testTrue(self):
        self.assertTrue(True)
if __name__=="__main__":
    unittest.main()
欢乐的小猪 2018-05-14
  • 打赏
  • 举报
回复
https://blog.csdn.net/hbu_pig/article/details/79649195
  • 打赏
  • 举报
回复
你这样加了__init__是重写了父类的初始化方法,父类的def __init__(self, methodName='runTest'):是传了2个参数,你传2个值, 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._resultForDoCleanups = None try: testMethod = getattr(self, methodName) except AttributeError: raise ValueError("no such test method in %s: %s" % (self.__class__, methodName)) self._testMethodDoc = testMethod.__doc__ self._cleanups = [] # 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') try: self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual') except NameError: # No unicode support in this build pass

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧