Python测试继承多个子类

时间:2015-10-24 22:29:08

标签: python unit-testing inheritance subclass python-unittest

我想编写一个Python测试套件,允许我从一个TestBaseClass继承并多次子类化,每次更改其成员变量中的一些小细节。

类似的东西:

import unittest

class TestBaseClass(unittest.TestCase):

  def setUp(self):
    self.var1 = "exampleone"

class DetailedTestOne(TestBaseClass):
  def setUp(self):
    self.var2 = "exampletwo"

  def runTest(self):
    self.assertEqual(self.var1, "exampleone")
    self.assertEqual(self.var2, "exampletwo")

class DetailedTestOneA(DetailedTestOne):
  def setUp(self):
    self.var3 = "examplethree"

  def runTest(self):
    self.assertEqual(self.var1, "exampleone")
    self.assertEqual(self.var2, "exampletwo")
    self.assertEqual(self.var3, "examplethree")

... continue to subclass at wish ...

在此示例中,DetailedTestOne继承自TestBaseClass,DetailedTestOneA继承自DetailedTestOne。

使用上面的代码,我得到:

AttributeError: 'DetailedTestOne' object has no attribute 'var1'

for DetailedTestOne和:

AttributeError: 'DetailedTestOneA' object has no attribute 'var1'

for DetailedTestOneA

当然,var1,var2,var3可能是TestBaseClass中第一个实例中声明的同一变量的某些成员。

关于如何实现这种行为的任何想法?

1 个答案:

答案 0 :(得分:3)

您需要通过super(DetailedTestOne, self).setUp()方法中的DetailedTestOne.setUp来调用子类中的超类实现。