我目前正在为我公司的构建脚本实施一些单元测试。为了消除臃肿并使其更容易实现新测试,我让我的所有测试类都继承自一个名为的自定义子类,该子类BasicTest
继承自 PyUnit 的 TestCase。
目前所有测试都使用两个函数BasicTest
:构造函数(尽管它显然可能在将来被覆盖)和runTest()
方法,如果没有传入值,超级构造函数使用的默认方法名称(例如BasicTest()
,将创建一个测试这将runTest()
在被调用时执行该方法,而BasicTest('Foo')
将使用该Foo()
方法)。
我想runTest()
从调用它的继承对象中简单地运行所有可能的测试。但是,由于runTest()
仅在子类中定义BasicTest
并由子类继承,我正在寻找一种方法来动态地从父类中调用所有子类的方法。我知道这违反了面向对象编程的规则,但据我所知,Python 从一开始就不是遵循规则的:)
为清楚起见,以下说明了我的意图:
我想runTest()
从子类对象中调用并且只处理该对象的方法。假设SubclassTest()
有方法TestParse()
和TestExec()
. 我想要这样:
sub = SubClassTest()
sub.runTest()
运行TestParse()
and TestExec()
,但我希望在不被覆盖的情况下runTest()
定义和继承该方法。BasicTest