Django testt: AttributeError: объект 'WSGIRequest' не имеет атрибута 'user' - PullRequest
0 голосов
/ 27 апреля 2019

Тест:
1) войдите в систему с пользователем
2) добавьте в избранное сообщение

class FormTest(TestCase):
    def setUp(self):

        self.user = ProjectUser.objects.create(username='testUser',
                                               email='testUser@user.com')
        self.user.set_password('testPassword')
        self.user.save()
        self.client = Client()
        self.factory = RequestFactory()


def sometest(self):

        self.client.login(username='testUser', password='testPassword')  
        user = auth.get_user(self.client)  
        assert user.is_authenticated 

        new_object_2 = SampleModel.objects.create(unique_id='123456', name='sample')

        request = self.factory.post(reverse('page1:favourite_post', kwargs={'fav_id': new_object_2.id}))
        response = favourite_post(request, new_object_2.id)
        print(response)

Мой файл url

path('favourite_post/<int:fav_id>', views.favourite_post, name='favourite_post'),

Файл views.py

def favourite_post(request, fav_id):
    post = get_object_or_404(Post, id=fav_id)

    if request.method == 'POST':
        if post.favourite.filter(id=request.user.id).exists():
            post.favourite.remove(request.user)


        else:
            post.favourite.add(request.user)

    return HttpResponseRedirect(reverse('page:some_page', args=(fav_id,)))

Я получаю ошибку:

AttributeError: у объекта 'WSGIRequest' нет атрибута 'user'

1 Ответ

1 голос
/ 27 апреля 2019

Не используйте фабрику для этого, это для тестирования представлений, особенно без промежуточного программного обеспечения. Вам необходимо использовать клиент, который вы уже использовали для входа в систему.

request = self.client.post(reverse('page1:favourite_post'...))

Обратите внимание, вам не нужно создавать клиента в методе setUp, это делается автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...