单元测试时如何处理 API 调用速率限制?
Posted
技术标签:
【中文标题】单元测试时如何处理 API 调用速率限制?【英文标题】:How to handle API call rate limit when unit testing? 【发布时间】:2021-06-05 13:44:39 【问题描述】:我正在使用 YouTube 的 API 构建一个应用程序。这是我第一次使用正确的 API,所以我不完全了解它是如何工作的(因此我在这里)。
每次我为应用程序编写代码时,我发现我的单元测试很快就达到了极限。人们通常如何处理这样的情况?这是 not 单元测试的情况吗?或者我可以做些什么来防止这个问题?
对于熟悉 YouTube API 的任何人,基于 this,我每次测试只请求检索 1-2 个视频,我目前有大约 10 个测试。如果我是正确的,假设我每次通话请求 2 个视频,我应该能够运行测试 10,000/20 = 500 次 ,不是吗?
【问题讨论】:
我建议不要在 real API 上运行单元测试(以及自动化测试套件);这是因为每个 real 端点调用都附加了一个quota cost。而是在 mocked API 上运行您的测试套件(您不必模拟整个 API 端点集,只需模拟那些您实际使用的端点)。 那太好了,谢谢你,Stvar。是的,我只是在寻找关于你认为最好的建议,所以在这种情况下,我将形成一些模拟数据。 只是想知道,就我所写的有关 YT 的 API 工作原理的内容而言,我的想法是否正确?你不知道也没关系,或者我没有提供足够的信息,我不会失眠。 请阅读this answer of mine。 再次感谢您,Stvar,这很有道理。是的,我想我会制作一些模拟数据/缓存我收到的内容并重用它们。我很感激这些信息???? 【参考方案1】:我会稍微不同地运行单元测试。我会每隔一小时左右运行一次作业,以达到 4-5 个最常见的场景或端点,并将它们保存到各自的文件中。
当您的单元测试运行时,它们不会为所有测试调用 API。相反,他们从文件中加载输出并进行处理。这样,您仍在检查处理 API 响应的代码是否仍然正常执行。您只是没有实时获得 API 响应。我会这样做以减少对 API 端点的命中。
【讨论】:
很遗憾,@zedfoxus,您的提议非常违反管理 YouTube 数据 API 使用的文档规范:DTOS,第 III.E.4 节,刷新、存储和显示 API 数据. 谢谢,@stvar。 developers.google.com/youtube/terms/developer-policies 是我根据您的评论查看的政策。 OP 必须自己决定他们推断什么以及如何进行单元测试。根据我对这些政策的推断,我会像我回答的那样进行单元测试。以上是关于单元测试时如何处理 API 调用速率限制?的主要内容,如果未能解决你的问题,请参考以下文章
向左滑动时如何处理UITableViewCell删除按钮动画?