如何解决Django单元测试“不存在匹配查询”
我正在尝试对模型进行单元测试,但不断收到“捐赠匹配查询不存在”,其回溯指向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')
我的模型。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 setUp(self):
self.pk = Donation.objects.create(charity='aclu',money_given=15).pk
def test_charity(self):
donation = Donation.objects.get(id=self.pk)
field_label = donation._meta.get_field('charity').verbose_name
self.assertEquals(field_label,'charity')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。