【问题标题】:How to disable/disconnect m2m_changed signal during testing?如何在测试期间禁用/断开 m2m_changed 信号?
【发布时间】:2016-01-13 11:22:10
【问题描述】:

我正在尝试在 django 测试用例期间加载固定装置,但 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 信号的正确方法是什么?

【问题讨论】:

    标签: django signals


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-05
      • 2018-11-10
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 2011-09-21
      • 2013-05-10
      • 2012-07-26
      相关资源
      最近更新 更多