我正在研究位于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)