我需要测试两个参数的组合,每个参数只有几个可能性。所以我想有一个类层次结构,每个子类都有自己固定的参数a,而参数B可以基于这个公共的a进行测试。我想在测试用例中根据一个移位的参数a来改变测试方法,这样我就不必为我测试的每个子类重写测试方法,但是在子类的测试中仍然可以有变化。在
但是,我发现如果我在setUp(self)中声明属性。属性self.A
没有子类化。这意味着我所有的子类都有相同的self。来自第一个测试用例(父类)的值。而且我所有的testSomething(self)
方法都不是虚拟的!层次结构的含义如下:
class baseTest(unittest.TestCase):
def setUp(self):
print('base setup')
self.A = 100
def testSomething(self):
print('base test')
# Do something with self.A
class subTest(baseTest):
def setUp(self):
print('sub setup')
self.A = 999
def testSomething(self):
print('sub test')
# Do something with self.A
编辑:我将两个类放在一个文件中,并依赖unittest.main()发布于if __name__ == "__main__"
运行这个文件可以让我:
^{pr2}$我原以为所有python方法都是虚拟的,但在unittest中似乎不是这样。在
我该怎么办?在
不知道你遇到了什么,但对我来说很好。。。?在
使用您的代码,然后添加以下内容:
以下是我的输出:
^{pr2}$更新
我实施了下面的计划,并按预期工作。 见下文:
旧的
好吧,我现在有个计划了。 我可以用非testSomething()方法编写测试实现,这些方法应该是虚拟的,然后将testSomething()委托给这些虚拟方法。在
我还没试过这个主意,但我觉得应该行得通。在
^{} library 被设计为采用您编写的测试方法和一些数据场景,为(test method×scenario)的每个组合生成单独的测试用例。在
例如:
当测试发现发生时,
^{pr2}$foo_TestCase
类将为测试运行程序生成6个测试。它们的名称将用方案名称注释,因此生成的测试报告区分每个特定的测试用例:如果您需要的话,可以使用更多的灵活性—请参阅
testscenarios
文档—但是上面的内容演示了我在大多数情况下是如何使用它的。在相关问题 更多 >
编程相关推荐