1

I'm trying to unit test a model but I keep getting "Donation matching query does not exist," with the traceback pointing to the first line in the test_charity function. I tried getting the object with charity='aclu' instead of by ID, but that did not fix it.

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')

My 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)

1 Answer 1

1

You setUp data with setUp. Furthermore you should save the primary key, and use this since a database can use any primary key. Depending on the database backend, and the order of the test cases, it thus can create an object with a different primary key:

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')
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.