使用测试模拟忽略Django信号

使用测试模拟忽略Django信号,django,django-models,Django,Django Models,我有一个函数设置来钩住模型上的pre_delete,我想在使用unittest.mock.patch进行测试时忽略它,但这只在我使用来自Django的信号名称或通过dispatch\u uid将其断开时起作用 原型看起来像: @receiver(pre_delete, sender=MyModel, dispatch_uid="pre_delete_my_model") def pre_delete_my_model(sender, instance, *args, **kw

我有一个函数设置来钩住模型上的
pre_delete
,我想在使用
unittest.mock.patch
进行测试时忽略它,但这只在我使用来自Django的信号名称或通过
dispatch\u uid
将其断开时起作用

原型看起来像:

@receiver(pre_delete, sender=MyModel, dispatch_uid="pre_delete_my_model")
def pre_delete_my_model(sender, instance, *args, **kwargs):
    ...
在我的测试中,这是有效的:

@patch("django.db.models.signals.pre_delete")
def test_something_that_triggers_pre_delete(self, pre_delete_mock):
    ...
但我想要更明确一点的,例如

@patch("my_app.signals.pre_delete_my_model")
def test_something_that_triggers_pre_delete(self, pre_delete_mock):
    ...
但这不起作用,我想,因为这不是被激发的信号,它只是被设置为接收它。我发现了一种使用
pre_delete.disconnect(…)
的方法,但我是一个讨厌的人,不喜欢那些在我测试中传播的调用的方式

有没有一种方法可以做到这一点,这样它就可以在装饰器中使用特定于模型或处理程序的东西