【问题标题】:Django test failing with posts.models.Post.DoesNotExist: Post matching query does not existDjango 测试失败,posts.models.Post.DoesNotExist:帖子匹配查询不存在
【发布时间】:2019-02-24 17:17:49
【问题描述】:

我有这些文件:

models.py

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.py

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

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

【问题讨论】:

  • 看起来像setUpTestData 的拼写错误 - 检查最后一个字母 :)
  • 啊,干杯。如此愚蠢的错误,但我会一直盯着它看一整天!

标签: python django python-3.x testing


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 2021-03-14
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多