【发布时间】:2020-04-02 09:09:04
【问题描述】:
为了提高我的代码覆盖率,我必须进行基本的单元测试。我不需要做任何花哨的事情。只需要最低限度。所以,在这种情况下,如果我能够成功地击中我的视图,那么这就是我需要做的。 如您在 models.py 中所见,敏捷团队嵌套在 Team 下。
models.py -
class Organization(models.Model):
orgname = models.CharField(max_length = 100, blank=True)
def __str__(self):
return str(self.orgname)
class Team(models.Model):
teamID = models.AutoField(primary_key=True)
teamName = models.CharField(max_length = 100, blank=True)
org = models.ForeignKey(Organization, on_delete=models.CASCADE)
def __str__(self):
return str(self.teamName)
class AgileTeam(models.Model):
agileTeamID = models.AutoField(primary_key=True)
agileTeamName = models.CharField(max_length = 100, blank=True)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
def __str__(self):
return str(self.agileTeamName)
views.py -
@csrf_exempt
def newATeam(request):
if request.method == 'POST':
param = json.loads(request.body)
agileteam = param.get('agileteam')
teamname = param.get('teamname')
team = Team.objects.get(teamName = teamname)
AgileTeam.objects.create(agileTeamName=agileteam, team=team)
return JsonResponse(status = 200, data = {})
urls.py -
path('ajax/newATeam/', views_admin.newATeam, name='ajax_newATeam'),
test_views.py -
class TestViews(TestCase):
@classmethod
def setUpTestData(self):
# set-up org
ORG_NAMES = ['REVCYCSCH', 'DIABLO', 'BROTHERHOOD']
for org in ORG_NAMES:
Organization.objects.create(orgname=org)
# set-up team
orgModels = Organization.objects.all()
TEAM_NAMES = ['Blitzkrieg ', 'Hammerheads', 'Mercenaries']
for i in range(len(TEAM_NAMES)):
Team.objects.create(teamName=TEAM_NAMES[i], org=orgModels[i])
# set-up agileteam
teamModels = Team.objects.all()
AGILE_TEAM_NAMES = ['Barons', 'Exterminators ', 'Mavericks', 'Renegades', 'Stratosphere', 'Trojans ']
index = 0
for team in teamModels:
for _ in range(2):
AgileTeam.objects.create(agileTeamName=AGILE_TEAM_NAMES[index], team=team)
index = index + 1
self.client = Client()
def test_newATeam(self):
params = {'agileteam': 'Barons', 'teamname': 'Blitzkrieg'}
response = self.client.post(path = '/ajax/newATeam/', data = params, content_type = 'application/json')
self.assertEqual(response.status_code, 200)
但是,我收到此错误 - Error
提前致谢!
【问题讨论】:
标签: python django unit-testing