我目前正在为我公司的构建脚本实现一些单元测试。为了消除膨胀并使实现新测试更容易一些,我让所有的测试类从一个名为BasicTest
的自定义子类继承自PyUnit的TestCase。在
当前有两个函数可供所有测试从BasicTest
使用:构造函数(尽管它在将来很明显会被重写)和runTest()
方法,这是超级的构造函数在没有传入值时使用的默认方法名(例如,BasicTest()
将创建一个测试,该测试将在以下情况下执行runTest()
方法调用,而BasicTest('Foo')
将使用Foo()
方法)。在
我想让runTest()
从调用它的继承对象运行所有可能的测试。但是,由于runTest()
只在BasicTest
中定义并由子类继承,所以我正在寻找一种方法,从super动态调用所有子类的方法。我知道这违反了OO编程的规则,但据我所知,Python根本就不是一个遵守规则的人:)
为了清楚起见,以下是我的意图:
我希望从子类对象调用runTest()
,并且只处理该对象的方法。假设SubclassTest()
具有方法TestParse()
和{
sub = SubClassTest()
sub.runTest()
运行TestParse()
和TestExec()
,但我希望在BasicTest
中定义并继承{
我们可以创建元类,它将所有有趣的子类方法收集到类属性中
将此元类设置为基类为
^{pr2}$__metaclass__
并实现runTests
方法在这之后,所有的子类都将使用这个元类来构造
最后,可以使用运行
runTests()
方法的收集方法样本代码: 将base class.py文件作为模块加载 检查
希望这有帮助
相关问题 更多 >
编程相关推荐