使用posts.models.Post.DoesNotExist进行Django测试失败:匹配后查询不存在

问题描述 投票:0回答:1

我有这些文件:

models.朋友

from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    body = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

test.朋友

from django.test import TestCase
from django.contrib.auth.models import User
from .models import Post


class BlogTests(TestCase):

    def setUpTestDate(cls):
        # create a user
        testuser1 = User.objects.create_user(
            username='testuser1', password='abc123')
        testuser1.save()

        # create a blog post
        test_post = Post.objects.create(
            author=testuser1, title='Blog title', body='Body content...')
        test_post.save()

    def test_blog_content(self):
        post = Post.objects.get(id=1)
        expected_author = f'{post.author}'
        expected_title = f'{post.title}'
        expected_body = f'{post.body}'
        self.assertEqual(expected_author, 'testuser1')
        self.assertEqual(expected_title, 'Blog title')
        self.assertEqual(expected_body, 'Body content...')

当我运行python manage.py test时,我收到此错误:

$ python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
E
======================================================================
ERROR: test_blog_content (posts.tests.BlogTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/paulcarron/PycharmProjects/blogapi/posts/tests.py", line 20, in test_blog_content
    post = Post.objects.get(id=1)
  File "/Users/paulcarron/.pyenv/versions/3.7.2/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/paulcarron/.pyenv/versions/3.7.2/lib/python3.7/site-packages/django/db/models/query.py", line 399, in get
    self.model._meta.object_name
posts.models.Post.DoesNotExist: Post matching query does not exist.

----------------------------------------------------------------------
Ran 1 test in 0.002s

FAILED (errors=1)
Destroying test database for alias 'default'...

我已经仔细检查过,在我的代码中看不到任何错误。有什么我错了吗?

python django python-3.x testing
1个回答
0
投票

正如@Robin Zigmond指出的那样,我有一个错字。 setUpTestDate应该是setUpTestData

© www.soinside.com 2019 - 2024. All rights reserved.