我想在继承自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
谢谢
最佳答案
乍一看,您似乎需要创建mrp_repair_test_case
的实例。您当前的线路:
mrp_repair_test_case(a=10,b=20)
实际上什么都没做。
尝试(未测试):
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)
这假设您已经将“out”设置为流。
编辑:
顺便问一下,有什么理由不使用设置方法来设置这些值吗?这是正常的最佳实践。从Load TestsFasTestCask的文档来看,它看起来只接受类本身,而不是它的一个实例,这意味着您相当反对UNITTEST模块的设计。
编辑2:
为了响应您的进一步信息,我实际上会在调用测试之前在模块级别分别设置uid和游标值。我通常不是全局的狂热爱好者,但如果我正确地理解了这些值,那么对于同一个客户来说,这些值总是相同的,这避免了使用它们的大多数常见陷阱。
编辑3:
要回答您的编辑,如果您真的想使用
__init__
的话,您可能可以,但是您必须滚动您自己的loadstestsfromtestcase选项,也可能是您自己的testsuite(您必须检查其工作原理的内部)。正如我上面所说的,你将反对模块的现有设计——如果你决定这样做,那么从零开始完全解决你自己的解决方案比使用UnTestToT更容易。修改:只需检查,你就必须滚动你自己的TestSu套版本,因为现有的版本为每个测试创建了TestCaseCases的新实例。