Реализация модульного теста для OAuth Flow в приложении Django

Я интегрировал OAuth в свое приложение Django. OAuth состоит из 2 шагов:

  1. Перенаправление на доменное имя OAuth-провайдера
  2. Отзыв на приложение Django с токеном

Я хотел бы реализовать блоки TestCase для вышеуказанного потока. Вот что я написал для тестирования шага 1:

def test_connect_with_oauth_provider(self):
    """Test connecting with OAuth provider."""
    url = signin_url("oauth-provider")

    res = self.client.get(url)
    self.assertEqual(res.status_code, status.HTTP_200_OK)

Однако тест использует домен testcase, а не мой реальный домен, и поэтому тест не работает. Не могли бы вы помочь мне реализовать тесты для обоих шагов? Спасибо!

В этом случае я рекомендую использовать родную библиотеку python unittest.mock. Использование библиотеки mock позволяет создать функцию или предоставить поддельное значение, которое будет использоваться только в ваших тестах.

Недавно я написал пост в блоге об использовании mock (Правильно! Бесстыдная самореклама), но также я указал, что mock имеет некоторые предостережения. Вы также можете обратиться к официальной документации, если хотите.

Поскольку ваш тест приведен в вашем сообщении, я не знаю другого способа, кроме использования unittest.mock. Однако имейте в виду, что эта библиотека может привести к путанице, потому что она может иметь некоторое контринтуитивное поведение.

Я бы рекомендовал вам проверить ваш редирект в настоящем модульном тесте (ваш представленный случай - это скорее интеграционный тест), протестировав одну функцию, которая выполняет работу.

Вернуться на верх