Django 单元测试 "matching query does not exist"
Django unit test "matching query does not exist"
我正在尝试对模型进行单元测试,但我不断收到“捐赠匹配查询不存在”,回溯指向 test_charity 函数中的第一行。我尝试使用 charity='aclu'
而不是通过 ID 获取对象,但这并没有解决问题。
from django.test import TestCase
from .models import Donation
class DonateModelTest(TestCase):
def init_data(self):
#print("got here")
x = Donation.objects.create(charity='aclu', money_given=15)
# print(x.id)
def test_charity(self):
donation = Donation.objects.get(id=1)
field_label = donation._meta.get_field('charity').verbose_name
self.assertEquals(field_label, 'charity')
我的models.py:
from django.db import models
class Donation(models.Model):
DONATE_CHOICES = [
('aclu', 'American Civil Liberties Union'),
('blm', 'Black Lives Matter'),
('msf', 'Medecins Sans Frontieres (Doctors Without Borders)')
]
charity = models.CharField(
max_length=4,
choices=DONATE_CHOICES,
default='aclu'
)
money_given = models.IntegerField(default=0)
您使用 setUp
设置数据。此外,您应该保存主键并使用它,因为数据库可以使用任何主键。根据数据库后端和测试用例的顺序,它可以创建一个具有不同主键的对象:
class DonateModelTest(TestCase):
def <b>setUp</b>(self):
<b>self.pk</b> = Donation.objects.create(charity='aclu', money_given=15)<b>.pk</b>
def test_charity(self):
donation = Donation.objects.get(id=<b>self.pk</b>)
field_label = donation._meta.get_field('charity').verbose_name
self.assertEquals(field_label, 'charity')
我正在尝试对模型进行单元测试,但我不断收到“捐赠匹配查询不存在”,回溯指向 test_charity 函数中的第一行。我尝试使用 charity='aclu'
而不是通过 ID 获取对象,但这并没有解决问题。
from django.test import TestCase
from .models import Donation
class DonateModelTest(TestCase):
def init_data(self):
#print("got here")
x = Donation.objects.create(charity='aclu', money_given=15)
# print(x.id)
def test_charity(self):
donation = Donation.objects.get(id=1)
field_label = donation._meta.get_field('charity').verbose_name
self.assertEquals(field_label, 'charity')
我的models.py:
from django.db import models
class Donation(models.Model):
DONATE_CHOICES = [
('aclu', 'American Civil Liberties Union'),
('blm', 'Black Lives Matter'),
('msf', 'Medecins Sans Frontieres (Doctors Without Borders)')
]
charity = models.CharField(
max_length=4,
choices=DONATE_CHOICES,
default='aclu'
)
money_given = models.IntegerField(default=0)
您使用 setUp
设置数据。此外,您应该保存主键并使用它,因为数据库可以使用任何主键。根据数据库后端和测试用例的顺序,它可以创建一个具有不同主键的对象:
class DonateModelTest(TestCase):
def <b>setUp</b>(self):
<b>self.pk</b> = Donation.objects.create(charity='aclu', money_given=15)<b>.pk</b>
def test_charity(self):
donation = Donation.objects.get(id=<b>self.pk</b>)
field_label = donation._meta.get_field('charity').verbose_name
self.assertEquals(field_label, 'charity')