2015-10-15 73 views
0

我试图在django测试用例中加载一个灯具,但m2m_changed信号发生了,它给出一个错误(信号检查一个外键是否处于相关状态)。如何在测试过程中禁用/断开m2m_changed信号?

answer建议使用disable_for_loaddata装饰,但m2m_changed没有rawfield

我曾尝试:禁用所述m2m_changed信号之前

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信号的正确方法是什么?

回答

2

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

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