Невозможно войти в Django тесты - PullRequest
0 голосов
/ 10 марта 2020

Попытка написать тесты для устаревшего проекта Django 1.11. В проекте используется пакет unittest (я не знаю, стандартный это или выбор).

Я пытаюсь использовать django.test.Client.force_login для проверки вида с LoginRequiredMixin, но он делает ничего . Я добавил print(self.request.user) в метод отправки mixin. Он выводит AnonymousUser, использую ли я force_login или нет. Почему он не работает?

Тест (упрощенный для удобства чтения):

class CheckoutTest(TestCase):
    def test_successful_payment(self):
        user = UserAccount.objects.create(email='foo@bar.com', is_owner=True, is_customer=True)

        self.client.force_login(user)

        self.client.post('/subscription/buy/' + str(package.id) + '/', {
            ... redacted ...
        })

Вид:

class BuyPackageView(LoginRequiredMixin, View):
    def post(self, request, *args, **kwargs):
        ... redacted ...

1 Ответ

0 голосов
/ 10 марта 2020

Мой тестовый код фрагмент выглядит так, я получаю пользователя из таблицы, связанной с приложением allauth:

from django.test import TestCase
from rest_framework.test import APIClient
from mainapp.tests.test_helper import TestsHelper


class ProjectViewSetTestCase(TestCase):

    def setUp(self):
        self._client = APIClient(enforce_csrf_checks=False)
        self._test_helper.prepare_data()

    def tearDown(self):
        # do some custom clean-up

    def testCreateProjectWithoutKeyWords(self):
        user_id = self._test_helper.user1_id
        user = User.objects.get(id=user_id)

        # prepare current test data ...
        self._client.force_authenticate(user=user)
        # interact with REST API, if you need to switch user use logout
        self._client.logout()

   _client = None
...