在Django应用程序中实现OAuth流的单元测试

ct2axkht  于 2022-09-21  发布在  Go
关注(0)|答案(1)|浏览(182)

我将OAuth集成到了我的Django应用程序中。OAuth有两个步骤:

1.重定向到OAuth提供商域名
1.使用令牌回调Django APP

我想为上面的流实现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)

但是,测试使用的是测试用例域,而不是我的真实域,因此测试失败。您能帮我实现这两个步骤的测试吗?谢谢!

kxkpmulp

kxkpmulp1#

在这种情况下,我建议使用python原生unittest.mock库。使用模拟库允许您创建函数或提供仅在测试中使用的假值。

最近,我写了一篇关于使用模拟的博客文章(正确!无耻的自我推销),但我也声明了mock有一些警告。如果您愿意,您也可以使用official documentation

因为你的测试是在你的帖子中给出的,我不知道除了使用unittest.mock还有其他方法。但是,请注意,此库可能会引起混淆,因为它可能会有一些违反直觉的行为。

我建议您在真正的单元测试中测试重定向(您提供的用例更像是一个集成测试),方法是测试执行此工作的单个函数。

相关问题