2014-10-09 117 views
0

在Django中測試對象能夠正確保存關係的最佳方法是什麼?如何在Django中測試模型關係

這是我的工作,但我不是100%確定這是正確的路要走。

class ModelCase(TestCase): 

    def setUp(self): 
     self.company = mommy.make(Company) 
     noz.assert_true(isinstance(self.company, Company)) 
     self.campaign = mommy.make(Campaign) 


    def test_assign_campaign_to_company(self): 
     """ 
     Test if a campaign can be assigned to a company 
     """ 
     self.campaign.company = self.company 
     self.campaign.save() 
     noz.assert_true(self.campaign.company.name) 

這是真的測試實際情況還是應該做其他事情?

回答

2

該斷言不查找數據庫。它斷言內存中的對象。

查詢數據庫最好使用:

(Campaign.objects 
     .filter(
      pk=self.campaign.pk, 
      company=self.company) 
     .exists()) 
+0

冷靜,你能解釋self.campaign .__類__對象的一部分? – Prometheus 2014-10-09 10:51:08

+0

只需使用'Campaign.objects',如果您已經導入了它並且適合您。這只是獲得經理的問題。 – 2014-10-09 10:52:39

+0

非常感謝! – Prometheus 2014-10-09 11:11:54