如何在 API 错误时重试 R testthat 测试?

How to retry R testthat test on API error?

一些测试依赖于一些外部服务(例如 API)。有时,这些外部服务会宕机。这可能会导致测试失败和(更糟糕的)持续集成工具失败。

有没有办法多次指示 testthat 测试和常规包示例重新 运行 examples/tests,最好是在第一次尝试后 5 分钟进行第二次尝试?

理想情况下,您将以不调用 API 或数据库的方式编写测试。

相反,您将根据规范模拟 API 端点,并为 API returns 意外结果或错误的情况编写测试。

这是一个允许您这样做的包示例:

https://github.com/nealrichardson/httptest

如果您担心您的供应商可能会改变 API,请与他们交谈并提取有关他们 API 变更管理的详细信息。

问他们这个:

What is your change management process? How do you avoid introducing break changes to existing endpoints that people are using?

(修改自post

如果您必须检查 API 是否仍然相同,请在代码的 API 验证和测试之间划清界线。

您将需要两个单独的进程:

  • 针对 API 端点的模拟执行的单元/验收测试。那些 运行 快速并且专注于您的应用程序的逻辑。

  • 定期验证 API 的管道。如果您的代码已经上线,您很可能会发现 API 中的任何重大更改。所以这是非常多余的。在特殊情况下,这可能很有用,但仅限于非常糟糕的供应商。