djnago unittest: clien.get ошибка 401, даже если я отправляю токен - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь создать юнит-тест для выхода из системы, для этого у меня есть:

    response = client.get('/api/v1/logout')
    self.assertEquals(response.status_code, 200)

но в моем контроллере выхода из системы у меня есть это:

permission_classes = (IsAuthenticated,)

таким образом я изменил свой код выше на это:

    response = self.client.post('/api/v1/login', data={'username': 'testuser', 'password': '12345678'})
    client = APIClient()
    client.credentials(HTTP_AUTHORIZATION='Bearer ' + response.json()['access_token'])
    response = client.get('/api/v1/logout')
    self.assertEquals(response.status_code, 200)

но когда я запускаю тест, в результате я получаю 401

      self.assertEquals(response.status_code, 200)
      AssertionError: 401 != 200

Я не уверен, как я могу передать токен на мой запрос

1 Ответ

1 голос
/ 26 мая 2019

tldr, для входа в систему https://www.django -rest-framework.org / api-guide / testing / # принудительная аутентификация


Почему?

unittest , как следует из названия, должен тестировать только одну единицу за раз.

Здесь мы тестируем две вещи, хотя не явно, но неявно мы.

  1. Логика входа в систему: мы передаем имя пользователя и пароль и берем access_token из ответа [хотя мы здесь не утверждаем, но это повлияет на следующий блок]
  2. Логика выхода: мыиспользуя access_token из предыдущей функциональности блокировки и тестирования, основанной на этом.

Я настоятельно считаю, что мы должны тестировать только один компонент за раз в модульном тесте, иначе назовите его интеграционным тестом.

Для нашего текущего сценария мы можем написать два теста:

  1. Проверить логику входа в систему: передать имя пользователя и пароль и подтвердить правильность access_token.
  2. Проверить логику выхода из системы: проверить логику входа в системуа также только тестовая логика выхода из системы.

Для ложного входа в систему мы можем использовать что-то вроде этого https://www.django -rest-framework.org / api-guide / testing / # forcing-authentication

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