您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在python中重载unittest.testcase

5b51 2022/1/14 8:22:47 python 字数 6506 阅读 581 来源 www.jb51.cc/python

我试图通过对unittest.testcase类进行子类化来创建自定义单元测试框架,但在处理__init__方法时似乎犯了一个错误. 我无法弄清楚为什么ComplexTest的构造函数在BasicTest中的构造函数之前没有被调用,并且异常似乎也与我的构造函数有关. 我是Python的新手,所以对于如何解决这个特定问题或我的用例的替代架构的任何帮助都将是非常受欢迎的. 谢谢! 1)test_fra

概述

我无法弄清楚为什么ComplexTest的构造函数在BasicTest中的构造函数之前没有被调用,并且异常似乎也与我的构造函数有关.

我是Python的新手,所以对于如何解决这个特定问题或我的用例的替代架构的任何帮助都将是非常受欢迎的.

谢谢!

1)test_framework.py

import unittest

class BasicTest(unittest.TestCase):
    def __init__(self,*args,**kwargs):
        print('BasicTest.__init__')
        super(unittest.TestCase,self).__init__(*args,**kwargs)

    def setUp(self):
        print('BasicTest.setUp')
        super(unittest.TestCase,self).tearDown()

    def tearDown(self):
        print('BasicTest.tearDown')
        super(unittest.TestCase,self).tearDown()


class ComplexTest(BasicTest):
    def __init__(self,**kwargs):
        print('ComplexTest.__init__')
        super(BasicTest,**kwargs)

    def setUp(self):
        print('ComplexTest.setUp')
        super(BasicTest,self).tearDown()

    def tearDown(self):
        print('ComplexTest.tearDown')
        super(BasicTest,self).tearDown()

2)test.py

import unittest
import test_framework

class TestValueFunctions(test_framework.ComplexTest):
    def __init__(self,**kwargs):
        print('TestValueFunctions.__init__')
        super(test_framework.ComplexTest,**kwargs)

    def setUp(self):
        print('TestValueFunctions.setUp')
        super(test_framework.ComplexTest,self).tearDown()
        self.value = 4711

    def tearDown(self):
        print('TestValueFunctions.tearDown')
        super(test_framework.ComplexTest,self).tearDown()

    def test_value(self):
        print('TestValueFunctions.test_value')
        self.assertEqual(self.value,4711)

if __name__ == '__main__':
    unittest.main()

3)当现在尝试运行它时,我看到下面的堆栈

TestValueFunctions.__init__
BasicTest.__init__
Traceback (most recent call last):
  File "D:\MyDev\ljs_app\trunk\examples\python\unittest\test.py",line 23,in <module>
    unittest.main()
  File "C:\Python27\lib\unittest\main.py",line 94,in __init__
    self.parseArgs(argv)
  File "C:\Python27\lib\unittest\main.py",line 149,in parseArgs
    self.createTests()
  File "C:\Python27\lib\unittest\main.py",line 155,in createTests
    self.test = self.testLoader.loadTestsFromModule(self.module)
  File "C:\Python27\lib\unittest\loader.py",line 65,in loadTestsFromModule
    tests.append(self.loadTestsFromTestCase(obj))
  File "C:\Python27\lib\unittest\loader.py",line 56,in loadTestsFromTestCase
    loaded_suite = self.suiteClass(map(testCaseClass,testCaseNames))
  File "D:\MyDev\ljs_app\trunk\examples\python\unittest\test.py",line 7,in __init__
    super(test_framework.ComplexTest,**kwargs)
  File "D:\MyDev\ljs_app\trunk\examples\python\unittest\test_framework.py",line 6,in __init__
    super(unittest.TestCase,**kwargs)
TypeError: object.__init__() takes no parameters
class BasicTest(unittest.TestCase):
    def __init__(self,**kwargs)

应该:

class BasicTest(unittest.TestCase):
    def __init__(self,**kwargs):
        print('BasicTest.__init__')
        super(BasicTest,**kwargs)

这将在BasicTest的母类(TestCase)上调用__init__. setUp和tearDown也是如此:

class BasicTest(unittest.TestCase):
    ...
    def setUp(self):
        print('BasicTest.setUp')
        super(BasicTest,self).setUp()

总结

以上是编程之家为你收集整理的在python中重载unittest.testcase全部内容,希望文章能够帮你解决在python中重载unittest.testcase所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶