Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python unittest.testcase的重载初始化_Python_Unit Testing - Fatal编程技术网

Python unittest.testcase的重载初始化

Python unittest.testcase的重载初始化,python,unit-testing,Python,Unit Testing,我想向继承自unittest.testcase的子类添加两个变量 像我一样: import unittest class mrp_repair_test_case(unittest.TestCase): def __init__(self, a=None, b=None, methodName=['runTest']): unittest.TestCase.__init__(self) self.a= a

我想向继承自unittest.testcase的子类添加两个变量

像我一样:

import unittest

class mrp_repair_test_case(unittest.TestCase):

     def __init__(self, a=None, b=None, methodName=['runTest']):
             unittest.TestCase.__init__(self)
             self.a= a
              self.b = b

     def test1(self):
           ..........
           .......

def runtest()
    mrp_repair_test_case(a=10,b=20)
    suite = unittest.TestLoader().loadTestsFromTestCase(mrp_repair_test_case)
    res = unittest.TextTestRunner(stream=out,verbosity=2).run(suite)
我怎样才能相信这一点: 我得到这个错误:

ValueError: no such test method in ****<class 'mrp_repair.unit_test.test.mrp_repair_test_case'>:**** runTest
ValueError:在****:****运行测试中没有这样的测试方法

谢谢

乍一看,您似乎需要创建一个
mrp\u repair\u test\u案例的实例
。您当前的线路:

mrp_repair_test_case(a=10,b=20)
实际上什么都没做

尝试(未测试):

这假设您已经将“out”设置为流

编辑:

顺便问一下,您有没有理由不使用设置方法来设置这些值?这是正常的最佳做法。查看loadTestsFromTestCase的文档,它似乎只接受类本身,而不是它的实例,这意味着您更倾向于反对unittest模块的设计

编辑2:

为了响应您的进一步信息,我实际上会在调用测试之前在模块级别分别设置uid和游标值。我通常不太喜欢globals,但如果我理解正确,这些值将是a)只读的B)对于同一个客户总是相同的,这避免了使用它们时的大多数正常陷阱

编辑3:

为了回答您的编辑,如果您真的想使用
\uuuu init\uuuu
,您可能可以,但是您必须从TestCase备选方案中滚动您自己的loadsTestsFromTestCase,可能还有您自己的TestSuite(您必须检查它的内部工作原理)。正如我上面所说的,您将与模块的现有设计背道而驰——如果您决定以这种方式进行测试,那么完全从头开始推出您自己的解决方案可能比使用unittest更容易Amend:刚刚选中,您肯定必须推出自己的TestSuite版本,因为现有版本会为每个测试创建TestCaseClass的新实例

def runtest():
    m = mrp_repair_test_case(a=10, b=20)
    suite = unittest.TestLoader().loadsTestsFromTestCase(m)
    res = unittest.TextTestRunner(stream=out, verbosity=2).run(suite)