Реализация модульного теста для OAuth Flow в приложении Django
Я интегрировал OAuth в свое приложение Django. OAuth состоит из 2 шагов:
- Перенаправление на доменное имя OAuth-провайдера
- Отзыв на приложение 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
. Однако имейте в виду, что эта библиотека может привести к путанице, потому что она может иметь некоторое контринтуитивное поведение.
Я бы рекомендовал вам проверить ваш редирект в настоящем модульном тесте (ваш представленный случай - это скорее интеграционный тест), протестировав одну функцию, которая выполняет работу.