我需要MockMixin为我的测试创建一些.它应该包括调用外部源的所有内容的模拟.例如,每次我在管理面板中保存模型时,我都会调用一些远程URL.如果嘲笑并使用那样的话会很好:
class ExampleTestCase(MockedTestCase):
# tests
Run Code Online (Sandbox Code Playgroud)
因此,每次我在管理员中保存模型时,例如在功能测试中,应用此模拟而不是调用远程URL.
这有可能吗?我能够为1个特定测试做到这一点,这不是问题.但是有一些全局模拟更有用,因为我经常使用它.
我正在测试一个继承自另一个非常复杂的类,使用DB连接方法和一堆依赖.我想模拟它的基类,以便我可以很好地使用子类中定义的方法,但是在我从一个模拟类继承的那一刻,对象本身变成了一个模拟并丢失了它的所有方法.
我怎么能模拟一个超类呢?
或多或少的情况可归纳为:
import mock
ClassMock = mock.MagicMock()
class RealClass(ClassMock):
def lol(self):
print 'lol'
real = RealClass()
real.lol() # Does not print lol, but returns another mock
print real # prints <MagicMock id='...'>
Run Code Online (Sandbox Code Playgroud)
这是一个简化的案例.实际发生的是RealClass扩展AnotherClass,但我设法拦截AnotherClass并用模拟替换它.