首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django测试-所有测试中的补丁对象

Django测试-所有测试中的补丁对象
EN

Stack Overflow用户
提问于 2014-09-16 06:06:10
回答 3查看 21K关注 0票数 40

我需要为我的测试创建某种类型的MockMixin。它应该包含对调用外部源的所有内容的模拟。例如,每次我在管理面板中保存模型时,我都会调用一些远程URL。这将是很好的,有这样的嘲笑和使用:

代码语言:javascript
运行
复制
class ExampleTestCase(MockedTestCase):
    # tests

因此,每次我在admin中保存模型时,例如在功能测试中,都会应用这个mock,而不是调用远程URL。

这真的可能吗?对于一个特定的测试,我可以做到这一点,这不是问题。但有一些全局模拟会更有用,因为我经常使用它。

EN

Stack Overflow用户

发布于 2015-07-29 04:21:46

添加到alecxe's answer中,如果您使用的是teardown(),那么according to the docs

您必须通过调用stop来确保修补已“撤消”。这可能比您想象的要麻烦,因为如果在setUp中引发异常,则不会调用tearDown

如果在您的测试中引发异常,您的补丁将无法撤消。更好的方法是在setUp()中调用addCleanup()。然后,您可以完全省略tearDown()方法。

代码语言:javascript
运行
复制
class BaseTestCase(TestCase):
    def setUp(self):
        self.patcher = patch('mymodule.foo')
        self.mock_foo = self.patcher.start()
        self.addCleanup(self.patcher.stop) # add this line
票数 30
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25857655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档