2013-04-16 43 views
2

我遇到了爲ManyToManyField條目開發測試的問題。我有一個簡單的博客模式是這樣的:測試ManyToManyField的最佳方法

class Tag(models.Model): 
    name = models.CharField(max_length=25) 

class Entry(models.Model): 

    title = models.CharField(max_length=80) 
    author = models.ForeignKey(User) 
    pubdate = models.DateTimeField() 
    tags = models.ManyToManyField(Tag) 
    text = models.TextField() 

我已經創造了一些非常基本的測試只是爲了純粹的地獄:

class EntryTests(TestCase): 
    def testEntryFields(self): 
     user1 = User.objects.create_user('xs', '[email protected]', 'pw') 
     user1.last_name = 'H' 
     user1.save() 

     now = timezone.now() 
     entry1 = Entry(title="Title", author=user1, pubdate=now, text="Hello") 
     entry1.save() 
     tag1 = entry1.tags.create(name="testtag") 
     tag1.save() 

     self.assertEqual(entry1.title, "Title") 
     self.assertEqual(entry1.pubdate, now) 
     self.assertEqual(entry1.text, "Hello") 
     self.assertEqual(entry1.author, user1) 
     self.assertEqual(entry1.tags.all()[0], tag1) 
     self.assertEqual(tag1.name, "testtag") 

此通過,但你可以看到,我我不得不做一些怪異的體操(生成一個所有條目的列表,並且只列出第一個條目),以便在entry1.tags上測試相等性。 Django有更好的方法嗎?

+0

時當然可能更合適。這是一個微不足道的例子。但後來在代碼中,當我通過各種函數測試我已經在m2m字段中進行的測試時,我想知道如何以最佳方式做到這一點。 – user1427661

+0

哦。那條評論消失了,但我會在那裏提醒大家,我並沒有真正關心編寫測試來測試Django的基本功能。 – user1427661

+0

嗯,但你究竟想要測試什麼? atm你只是測試核心的Django功能。你想以某種方式擴展這些類嗎? – fsw

回答

相關問題