我需要为我的测试创建某种类型的MockMixin.它应该包括对调用外部源的所有内容的模拟. 例如,每次我在管理面板中保存模型时,我都会调用一些远程URL.如果能像这样被嘲笑和使用,那就太好了:

class ExampleTestCase(MockedTestCase):
    # tests

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

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

推荐答案

根据这mock documentation条:

补丁可以用作TestCase类decorator .它的工作原理是

这基本上意味着您可以创建一个应用了@patch个修饰符的基本测试类,该类将模拟您的外部调用,而内部的每个测试方法都将被执行.

此外,您还可以在setUp()tearDown()方法中分别使用start() and stop()个补丁程序方法:

class BaseTestCase(TestCase):
    def setUp(self):
        self.patcher = patch('mymodule.foo')
        self.mock_foo = self.patcher.start()

    def tearDown(self):
        self.patcher.stop()

Django相关问答推荐

如何在Django CMS中更新上下文

Django allauth 社交帐户注册中邮箱的模板变量

如何在Django管理自定义筛选器中包含自定义模型方法?

访问默认的 django-allauth 登录和注册页面时出现 TemplateSyntaxError

django 的 Manager.create() 方法有什么作用?

包含资源时,DRF 返回我的软删除记录

Django `UniqueConstraint` 异常处理方式与 'unique=True' 相同

Django中基于令牌的身份验证

在 Bootstrap 中使单击的选项卡处于活动状态

如何从不是 django 元素文件夹的文件夹中运行 gunicorn

如何运行克隆的 Django 元素?

可以在基于 Django 类的视图中设置实例变量吗?

测试 Django ModelForm 是否有实例

ImportError:无法导入设置

如何在 Django 和 django-jsonfield 中将 JSONField 的默认值设置为空列表?

Django将HttpResponseRedirect返回到带有参数的url

Table doesn't exist表不存在

django-getlist()

django rest 框架:从序列化程序 validate() 方法设置字段级错误

Django: Force强制 Select 相关?