需要 OAuth 令牌的单元测试 API [关闭]
Posted
技术标签:
【中文标题】需要 OAuth 令牌的单元测试 API [关闭]【英文标题】:Unit testing APIs that require OAuth tokens [closed] 【发布时间】:2013-02-24 05:05:26 【问题描述】:我正在尝试编写一套自动化集成测试来测试我的 C# 客户端库对 Yahoo Fantasy Sports API 的调用。几个 API 调用需要 OAuth 令牌,这是我遇到的一些困难。我可以使用 Web 浏览器生成访问密钥和秘密,然后在我的测试代码中传递它们,但是令牌会在一小时后过期,所以我需要手动重新生成这些并在我想要运行的任何时候更新我的测试配置测试。
在需要 OAuth 令牌时是否有编写 API 集成测试的最佳实践?
【问题讨论】:
不能自动生成密钥吗?有 REST api 吗?或者你可以只做代码中的http请求是你必须的。 @Sean,你是如何最终嘲笑 Yahoo Fantasy Sports API 的?您是否创建了一个模拟它的代码框架?我也需要模拟 API,我想了解您是如何做到的。 我从来没有完全嘲笑过它。我正在开发一个框架,您可以在此处查看:github.com/sconno05/yahoo-fantasy-football-tools。我最终将令牌放入环境变量中,但仍需要通过 Web 管理页面重新生成它们。 您可以从 ServiceStack AuthTests 本身了解身份验证测试 - github.com/ServiceStack/ServiceStack/blob/master/tests/… 您可以在初始化方法中为一组测试创建访问令牌,但这至少会带来一个问题。如果您的测试花费的时间比令牌的生命周期长(希望不会)怎么办?我来到这里实际上对单元测试访问远程 API 的客户端感兴趣。我正在为为别人的 API 构建模拟服务的想法而苦苦挣扎。我想在这里看到答案。 【参考方案1】:通常此类 api 提供了一种无需使用浏览器即可获取身份验证令牌的方法。我不确定雅虎体育是否是其中之一。
通常你必须创建一个应用程序来访问 OAuth2 系统,然后他们给你一个 ClientID 和 ClientSecret,然后你点击一个令牌 URL 并接收到一个小时内有效的访问令牌。
不过,您可能需要考虑完全不进行集成测试。如果我是你,我会简单地模拟 Api 响应并在你的测试中使用它。因此, gt 每个调用的响应样本,然后简单地创建一个假响应,只要你点击它就会返回它。然后你仍然可以运行你的测试。
您需要回答的问题是:我到底在测试什么?您是在测试第三方 API 还是要测试自己的代码。
另外,不要忘记每个 api 允许在特定时间窗口内被点击特定次数。还有一个伪造它的理由,我想说
【讨论】:
如果我正在测试实现 OAuth 的第 3 方 api 会怎样以上是关于需要 OAuth 令牌的单元测试 API [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Gatling 负载测试中为多个虚拟用户使用单个 OAuth2.0 令牌
如何获取虚拟谷歌访问令牌来测试 oauth google api