Django和鼻测试:DoesNotExist:<;对象>;匹配的查询不存在

Django和鼻测试:DoesNotExist:<;对象>;匹配的查询不存在,django,matching,Django,Matching,我正在django上启动一个小应用程序。目前,它的目标只是管理测试人员(又名用户)和团队。这是我的model.py: from django.db import models class Team(models.Model): name = models.CharField(max_length=200) def __unicode__(self): return self.name def get_testers(self): retu

我正在django上启动一个小应用程序。目前,它的目标只是管理测试人员(又名用户)和团队。这是我的model.py:

from django.db import models

class Team(models.Model):
    name = models.CharField(max_length=200)
    def __unicode__(self):
        return self.name
    def get_testers(self):
        return self.tester_set.all()

class Tester(models.Model):
    team = models.ForeignKey(Team)
    visa = models.CharField(max_length=3)
    privileged = models.BooleanField()
    def __unicode__(self):
        return self.visa
我正试图为“get_testers”函数编写一个测试。 这是:

from models import Team, Tester
def testTeamGetTesters_test():
    t = list(Team.objects.get(id=2L).get_testers())

    a = Tester(visa = 'a', privileged = True)
    b = Tester(visa = 'b', privileged = True)

    assert(t[0].visa == a.visa and t[0].privileged == a.privileged and t[1].visa == b.visa and t[1].privileged == b.privileged)
但当我跑步时:

$ python manage.py test tmg
我得到这个错误:

nosetests --verbosity 1 tmg
E
======================================================================
ERROR: tempsite.tmg.tests.testTeamGetTesters_test
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/nose/case.py", line 183, in runTest
    self.test(*self.arg)
  File "/home/charlie/code/tempsite/../tempsite/tmg/tests.py", line 8, in testTeamGetTesters_test
    t = list(Team.objects.get(id=2L).get_testers())
  File "/usr/lib/pymodules/python2.6/django/db/models/manager.py", line 132, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line 341, in get
    % self.model._meta.object_name)
DoesNotExist: Team matching query does not exist.
因此,我编写了大致相同的测试,但可以直接运行:

from models import Team, Tester

t = list(Team.objects.get(id=2L).get_testers())

a = Tester(visa = 'a', privileged = True)
b = Tester(visa = 'b', privileged = True)

print "%r" % (t[0].visa == a.visa and t[0].privileged == a.privileged and t[1].visa == b.visa and t[1].privileged == b.privileged)
…当我运行它时:

$ python tests.py
True

这是非常令人困惑的。。。我检查了数据库,所有的对象都被完美地检索到,但是我仍然得到这个错误…

您是否在测试中的某个地方创建了id为2的团队对象?不要忘记测试从一个空白数据库开始。

您是否在测试中的某个地方创建id为2的团队对象?别忘了测试是从一个空白数据库开始的