首页 > 解决方案 > 出生日期测试失败

问题描述

我是 python-django 编码的初学者。目前我正处于https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Testing的挑战部分。我的测试进展顺利,除了def test_form_date_of_death_initially_set_to_expected_date(self)。错误是AssertionError: datetime.date(1900, 1, 1) != datetime.date(2020, 6, 11)据我了解,1900,1,1 是函数完成检查后返回给我的日期。但问题是我不知道这个日期是怎么出来的。我检查了我的文件,但看不到任何将其设置为 1900、1、1 的代码。如果未设置,这是默认日期吗?如果它本质上是默认的,我怎么设置测试作者的死亡日期,它仍然出现在 1900、1、1。如果有人可以帮助我,请不胜感激。谢谢

class AuthorCreateTest(TestCase):
        def setUp(self):
            # Create a user
            test_user1 = User.objects.create_user(username='testuser1', password='1X<ISRUkw+tuK')
            test_user2 = User.objects.create_user(username='testuser2', password='2HJ1vRV0Z&3iD')
    
            test_user1.save()
            test_user2.save()
    
            # Give test_user2 permission to renew books.
            permission = Permission.objects.get(name='Set book as returned')
            test_user2.user_permissions.add(permission)
            test_user2.save()
    
            # Create a book
            test_author = Author.objects.create(first_name='John', last_name='Smith', date_of_death='2006-06-11')
            
        def test_redirect_if_not_logged_in(self):
            response = self.client.get(reverse('author-create'))
            self.assertRedirects(response, '/accounts/login/?next=/catalog/author/create/')
    
        def test_forbidden_if_logged_in_but_not_correct_permission(self):
            login = self.client.login(username='testuser1', password='1X<ISRUkw+tuK')
            response = self.client.get(reverse('author-create'))
            self.assertEqual(response.status_code, 403)
    
        def test_logged_in_with_permission(self):
            login = self.client.login(username='testuser2', password='2HJ1vRV0Z&3iD')
            response = self.client.get(reverse('author-create'))
            self.assertEqual(response.status_code, 200)
    
        def test_uses_correct_template(self):
            login = self.client.login(username='testuser2', password='2HJ1vRV0Z&3iD')
            response = self.client.get(reverse('author-create'))
            self.assertEqual(response.status_code, 200)
            self.assertTemplateUsed(response, 'catalog/author_form.html')

    def test_form_date_of_death_initially_set_to_expected_date(self):
        login = self.client.login(username='testuser2', password='2HJ1vRV0Z&3iD')
        response = self.client.get(reverse('author-create'))
        self.assertEqual(response.status_code, 200)

        expected_initial_date = datetime.date(2020, 6, 11)
        response_date = response.context['form'].initial['date_of_death']
        response_date = datetime.datetime.strptime(response_date, "DD/MM/YYYY").date()
        self.assertEqual(response_date, expected_initial_date)

    def test_redirects_to_detail_view_on_success(self):
        login = self.client.login(username='testuser2', password='2HJ1vRV0Z&3iD')
        response = self.client.post(reverse('author-create'),
                                    {'first_name': 'Christian Name', 'last_name': 'Surname'})
        # Manually check redirect because we don't know what author was created
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response.url.startswith('/catalog/author/'))

标签: pythondjango

解决方案


推荐阅读