클래스 방법을 호출하는 파이썬 방법 테스트
-
20-09-2019 - |
문제
매우 간단한 방법이 있습니다.
Class Team(models.Model):
def sides(self):
return SideNames.objects.filter(team=self)
Sidename은 팀과 같은 파일에 정의 된 또 다른 모델이며
시도하고 테스트 할 때 :
self.assertEquals(len(t.sides()), 2)
다음 오류가 발생합니다.
return SideNames.objects.filter(team=self)
AttributeError : 'Nonetype'객체는 속성 '개체'가 없습니다.
그러나 내가 시험을 바꾸면
self.assertEquals(len(SideNames.objects.filter(team=t)), 2)
그런 다음 오류가 발생하지 않습니다. Test 자체에서 부상자를 호출하고 실제 방법을 호출하는 것의 차이점은 무엇입니까?
참고로, 여기에는 2 개의 클래스가 있습니다.
class Team(models.Model):
"""The model for a football team."""
class Admin:
pass
def __unicode__(self):
return u'%s' % self.name
def is_player(self, player):
"""Checks to see if 'player' is a member if this team. Returns True if they are, or False otherwise."""
try:
teamPlayer = TeamPlayers.objects.get(player=player, team=self)
return True
except ObjectDoesNotExist:
return False
def sides(self):
"""Return the side names for this team"""
return SideNames.objects.filter(team=self)
def updateSides(self, side_a, side_b):
"""Update the side names"""
names = SideNames.objects.filter(team=self);
a = SideNames.objects.get(name = names[0].name)
a.name = side_a
a.save()
b = SideNames.objects.get(name = names[1].name)
b.name = side_b
b.save()
name = models.CharField("Team Name", max_length=255)
organiser = models.ForeignKey(User)
class SideNames(models.Model):
"""Holds the names of the sides for each team"""
class Admin:
pass
def __unicode__(self):
"""Pretty print the SideNames object"""
return self.name
team = models.ForeignKey(Team)
name = models.CharField(max_length=128)
해결책
우연히 테스트는 다음과 같은 일을합니까?
from myapp import models
...
models.SideNames = None
그것이 바로 그 방법의 맥락에서 사이드 이름이 왜 없어야하는지에 대해 생각할 수있는 유일한 설명이기 때문에.
옆으로, 방법 자체는 무의미합니다. 거꾸로 관계는 Django에 의해 자동으로 제공되므로 t.sidenames_set.all()
.
다른 팁
테스트를 정의하는 모듈에서 이름을 가져오고 있습니다. SideNames
다른 모듈에서. 그곳의 모듈에서 sides
메소드는 정의됩니다 SideNames
정의되거나 가져 오지 않습니다.
제휴하지 않습니다 StackOverflow