Python unittest.testcase的重载初始化
我想向继承自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
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)