如何在测试期间禁用/断开m2m_changed信号?

时间:2015-10-15 06:12:56

标签: django signals

我正在尝试在django测试用例期间加载一个fixture,但是m2m_changed信号启动并且它发出错误(信号检查外键是否处于相关状态)。

answer建议使用disable_for_loaddata装饰器,但m2m_changed没有raw field

我试过了:

class DaysTests(APITestCase):
    fixtures = ['initial_data.json'] # fixture is loaded before disabling m2m_changed
    def setUp(self):
        m2m_changed.disconnect(days_handler, sender=Foo.days.through)

    def test_api(self):
        # test logic.

在禁用m2m_changed信号之前加载初始数据。

断开/禁用m2m_changed信号的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您应该尝试禁用此信号,而不是在setUp方法中,而是在setUpClass中,因为它是在加载灯具之前执行的。这是一种使用它的可能方式:

@classmethod
def setUpClass(cls):
    super(DaysTests, cls).setUpClass()
    m2m_changed.disconnect(...)