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有更好的方法嗎?
時當然可能更合適。這是一個微不足道的例子。但後來在代碼中,當我通過各種函數測試我已經在m2m字段中進行的測試時,我想知道如何以最佳方式做到這一點。 – user1427661
哦。那條評論消失了,但我會在那裏提醒大家,我並沒有真正關心編寫測試來測試Django的基本功能。 – user1427661
嗯,但你究竟想要測試什麼? atm你只是測試核心的Django功能。你想以某種方式擴展這些類嗎? – fsw