Python Django模型关系测试
我是django测试新手,在使用django测试模型之间的关系时遇到了一些问题 以下是我的模型摘录:Python Django模型关系测试,python,django,django-models,django-testing,Python,Django,Django Models,Django Testing,我是django测试新手,在使用django测试模型之间的关系时遇到了一些问题 以下是我的模型摘录: class Member(models.Model): user = models.OneToOneField('auth.User') points = models.IntegerField() def __unicode__(self): return self.points def get_number_of_poll(self):
class Member(models.Model):
user = models.OneToOneField('auth.User')
points = models.IntegerField()
def __unicode__(self):
return self.points
def get_number_of_poll(self):
nbr_of_poll = Poll.objects.filter(user=self.user).count()
return nbr_of_poll
class Poll(models.Model):
question = models.CharField(max_length=200)
user = models.ForeignKey(User)
def __unicode__(self):
return self.question
以下是测试:
from polls.models import Member, Poll
from django.contrib.auth.models import User
from django.test import TestCase
class MemberTestCase(TestCase):
def setUp(self):
user = User(username='user')
self.member = Member(user=user, points=5000)
poll = Poll(question='poll', user=user)
def test_get_number_of_poll(self):
self.assertEqual(self.member.get_number_of_poll(), 1)
问题在于总是返回0的test\u get\u number\u of\u poll()
方法。该代码在现场按预期工作。
我考试有什么问题吗?我不确定如何在测试类中设置轮询。问题在于
poll = Poll(question='poll', user=user)
仅实例化轮询对象,使用管理器实际保存对象,例如
poll = Poll.objects.create(question='poll', user=user)
您不会保存在安装方法中创建的任何项目。实例化模型对象不会将其保存到数据库中:您应该对其调用
save()
,或者只使用User.objects.create(username='User')
等来保存它。这很有意义。一旦测试完成,我应该使用tearDown()
方法删除它们,还是自动完成?