2015-10-15 69 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(...)