基于我有限的Python知识,我生成了以下代码片段:
#import statements skipped
class DTestWrapper(BaseA if inLinux else unittest.TestCase):
def setUpDTest(self):
if inLinux:
super(BaseA , self).setUpTestCase()
else:
super(unittest.TestCase, self).setUp()
def tearDownDTest(self):
if inLinux:
super(BaseA ,self).tearDownTestCase()
else:
super(unittest.TestCase,self).tearDown()
一些背景:BaseA
是一个自定义类,用于将测试输出美化为表。它有成员函数setUpTestCase
、tearDownTestCase
和许多其他函数。在
我想做什么:
我想为我自己的类setUp
和tearDown
基于不同平台调用不同的setUp
和{BaseA
setUp
和{unittest.TestCase
中的函数。我有另一个继承自DTestWrapper
的类D
,它将重写setUpDTest
方法,但为了测试目的,它目前只是空的。在
问题:
当我运行上面的代码片段时,似乎没有调用setUp
或{
如何在DTestWrapper
中调用不同的setUp
函数?这有可能吗?
因为我在学习,任何反馈都是非常感谢。非常感谢。在
super()
需要current类以搜索父类为基础:您可能希望将
BaseA
方法名与unittest.TestCase
方法相匹配,并为自己节省额外的if
测试。例如,简单的别名可以;BaseA.tearDown = BaseA.tearDownTestCase
。在super()
需要当前类来确定正确的方法解析顺序,这完全取决于基类的组合和顺序。如果给它一个基类从开始,那么super()
将跳过该基类上的任何方法,因为它必须假定该基类是父类。在如果可能的话,我会尝试将您的自定义方法重命名为}。在
setUp
和{这样,一旦类被实例化(子类化}取决于
unittest.TestCase
或{inLinux
变量),将自动调用正确的方法,而无需重新定义它们。在如果您确实需要扩展它们,那么
应该可以。在
相关问题 更多 >
编程相关推荐