如何在Django测试用例中使用正确的oAuth2重定向url?

时间:2018-05-15 21:44:04

标签: python django testing automated-tests

我的Django webapp使用oAuth2在Strava中进行身份验证。

  1. 我的网页中有一个链接向Strava发送请求,指示其他参数中的重定向网址。在此示例中,http://127.0.0.1:8000/token_exchange

  2. Strava然后使用代码向该URL发出请求以交换访问令牌。我有一个观点,即在该网址中进行交换。

  3. 一切正常。

    我的问题是我正在尝试构建自动化测试。但是当我启动测试时(使用python manage.py测试),服务器不会在端口8000中运行,而是在不同的端口中运行。

    是否有最佳实践方法来管理该重定向网址,以便它在生产中具有生产域,但在运行测试时使用测试服务器地址?

    感谢!!!

1 个答案:

答案 0 :(得分:0)

  

单元测试的目标是隔离程序的每个部分,并显示各个部分是正确的。

https://en.wikipedia.org/wiki/Unit_testing#Advantages

如果您正在编写单元测试而不是复杂的集成测试,那么最好的做法就是嘲笑这种行为。

关于unittest.mock库的Python文档有一个很棒的指南,介绍如何修补你在特定情况下未测试的所有行为: https://docs.python.org/3/library/unittest.mock-examples.html

此外,您一定要查看responses库,当您尝试测试依赖第三方服务的部件时,它非常有用: https://github.com/getsentry/responses