我需要为我的测试创建某种类型的MockMixin。它应该包含对调用外部源的所有内容的模拟。例如,每次我在管理面板中保存模型时,我都会调用一些远程URL。这将是很好的,有这样的嘲笑和使用:
class ExampleTestCase(MockedTestCase):
# tests因此,每次我在admin中保存模型时,例如在功能测试中,都会应用这个mock,而不是调用远程URL。
这真的可能吗?对于一个特定的测试,我可以做到这一点,这不是问题。但有一些全局模拟会更有用,因为我经常使用它。
发布于 2015-07-29 04:21:46
添加到alecxe's answer中,如果您使用的是teardown(),那么according to the docs
您必须通过调用
stop来确保修补已“撤消”。这可能比您想象的要麻烦,因为如果在setUp中引发异常,则不会调用tearDown。
如果在您的测试中引发异常,您的补丁将无法撤消。更好的方法是在setUp()中调用addCleanup()。然后,您可以完全省略tearDown()方法。
class BaseTestCase(TestCase):
def setUp(self):
self.patcher = patch('mymodule.foo')
self.mock_foo = self.patcher.start()
self.addCleanup(self.patcher.stop) # add this linehttps://stackoverflow.com/questions/25857655
复制相似问题