如何在 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 中的任何重大更改。所以这是非常多余的。在特殊情况下,这可能很有用,但仅限于非常糟糕的供应商。
一些测试依赖于一些外部服务(例如 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 中的任何重大更改。所以这是非常多余的。在特殊情况下,这可能很有用,但仅限于非常糟糕的供应商。