ошибки в django тестах - PullRequest
       0

ошибки в django тестах

0 голосов
/ 17 февраля 2020

я пытаюсь запустить следующий тест, но я не уверен, почему он не работает, так как при запуске тестов создается тестовая база данных, и это означает, что вновь созданный элемент получает идентификатор 1, но я все еще получаю ошибку, что нет объекта соответствует запросу

модель

from django.db import models

# Create your models here.


class Post(models.Model):
    text = models.TextField()

    def __str__(self):
        return self.text[:50]

тесты

from django.test import TestCase

from .models import Post

# Create your tests here.


class PostModelTest(TestCase):

    def setup(self):
        post = Post.objects.create(text="just a test")

    def test_text_content(self):
        post = Post.objects.get(id=1)
        expected_obect_name = f'{post.text}'
        self.assertEqual(expected_obect_name, 'just a test')

вот ошибка enter image description here

1 Ответ

0 голосов
/ 17 февраля 2020

Прежде всего следует назвать метод setUp, а не setup. Это чувствительно к регистру. Но это, вероятно, не решит вашу проблему, так как django не сбрасывает автоматический идентификатор для каждого TestCase класса. Так что, если у вас есть другой тестовый пример с тем же кодом, ошибка повторится снова. Чтобы решить эту проблему, вам нужно сохранить идентификатор записи, например, self.post_id и использовать его в методах тестирования вместо 1:

class PostModelTest(TestCase):

    def setUp(self):
        post = Post.objects.create(text="just a test")
        self.post_id = post.pk  

    def test_text_content(self):
        post = Post.objects.get(id=self.post_id)
        expected_obect_name = f'{post.text}'
    self.assertEqual(expected_obect_name, 'just a test')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...