我有一个很好的基本测试类,它扩展自django测试用例和另一个类:
class MyTestCase(TestCase, TestFreshProvisionedEachTest):
现在一切都很好地工作,除了为了使它工作,我们必须(用Foord的模拟库)在中间件中修补几个函数。在
我的想法是这样会很好的:
^{pr2}$但是它似乎不起作用,子类的方法没有被修补。 我当时就想有办法
MyTestCase = patch(MyTestCase, 'spotlight.middleware.extract_host_name', new=lambda host_name: TEST_DOMAIN)
但这也是不可能的。在
有没有办法避免这种重复,并在超类上做一个补丁 哪一个也修补了所有的子类方法?在
为此最好使用元类,因为它比手动应用装饰器更容易处理测试用例的继承。大致如下(我还没有测试过,但是你应该知道这个想法):
使用这种方法,
PatchedTestCase
的所有子类的所有方法都将被修补。您还可以使用不同的patch_method
实现定义其他基类。在相关问题 更多 >
编程相关推荐