Python 测试多个子类的继承

标签 python unit-testing inheritance subclass python-unittest

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

类似于:

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'

对于DetailedTestOne 和:

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

对于DetailedTestOneA

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

关于如何实现这种行为有什么想法吗?

最佳答案

您需要通过在 DetailedTestOne.setUp 方法内部执行 super(DetailedTestOne, self).setUp() 等操作来调用子类中的父类(super class)实现。

关于Python 测试多个子类的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324050/

相关文章:

java - 在构造函数中自分配对象其子对象

python - 对包含在文本文件中的元组执行计算

unit-testing - 需要帮助测试 Windows Phone 8 中的绑定(bind)

c# - 我如何对我的 Controller 进行单元测试以确保 Windsor 在使用 PerWebRequestLifestyle 时可以解决依赖关系

c++ - 通过基类构造函数从驱动类模板值初始化基类数组成员变量

c# - 使子类中的成员只读

python - 将路径/bar/foo/baz/../.. 解析为/bar 的方便方法是什么?

python - 创建对象字典

python - 变量是名称、值还是内存位置?

java - stub 类仍然像通常调用的那样运行