教程的Django测试无法正常工作

时间:2020-10-21 22:20:43

标签: python django

我正在研究位于https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Testing.I的教程,正在研究AuthorCreateViewTest来为AuthorCreate视图创建测试,但有一个我无法解决的问题。请在下面查看我面临的问题。我已经附加了该项目的代码,我认为它与此问题有关。我敢肯定这很简单,但是我是使用Python和Django进行编码的新手。如果可以的话请帮助,以便我继续培训。

问题/结果

C:\Project\django_projects\locallibrary>python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
...............[(41, 'Set book as returned')]
F[(41, 'Set book as returned')]
.[(41, 'Set book as returned')]
..........
======================================================================
FAIL: test_logged_in_with_permission (catalog.tests.test_views.AuthorCreateViewTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Project\django_projects\locallibrary\catalog\tests\test_views.py", line 459, in test_logged_in_with_permission
    self.assertEqual(response.status_code, 200)
AssertionError: 403 != 200

----------------------------------------------------------------------
Ran 27 tests in 5.632s

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

Views.py

class AuthorCreate(PermissionRequiredMixin, CreateView):
    model = Author
    fields = '__all__'
    ######################################################
    # You can set the initial values like this
    ######################################################
    initial = {'date_of_death': '05/01/2018'}
    ######################################################
    permission_required = 'catalog.can_mark_returned'

test_views.py

class AuthorCreateViewTest(TestCase):
"""Test case for the AuthorCreate view (Created as Challenge)."""

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

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

    # Check permissions for test_user2
    permissions = Permission.objects.filter(user=test_user2)
    perm_tuple = [(x.id, x.name) for x in Permission.objects.filter(user=test_user2)]
    print(perm_tuple)

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

0 个答案:

没有答案