如何解决如何在 Dataflow 中进行此类测试在 twitter 上称为功能测试?
我们像这样进行功能测试 -> https://blog.twitter.com/engineering/en_us/topics/insights/2017/the-testing-renaissance.html
那篇文章的 TLDR,我们向微服务发送请求(REST POST with body),模拟 GCP 存储,模拟下游 api 调用,以便可以重构整个微服务。此外,我们可以在不更改测试的情况下更换我们的平台/库,这使我们非常灵活。
我的第一个问题是 DataFlow (apache beam) 可以接收 REST 请求来触发作业吗?我看到大部分 api 都围绕“创建作业”,但我在文档中没有看到“执行作业”,而我确实看到 get status 返回作业执行的状态。我只是看不到触发工作的方法
- 从我的存储 api(它是可模拟的并且位于 GCP 前面)读取
- 希望跨多个节点处理文件
- 调用下游的 apis(这也是可模拟的)
然后,我只是想在我的测试中模拟 http 调用,然后在读取文件时,返回一个真实的客户文件,然后在完成后,我的测试将验证所有正确的请求都发送到下游的 api。
>我们在功能测试中使用了 apache beam,但不确定它是否与 google 的数据流版本相同:( 因为那将是最理想的!!!-> 嗯,是否有报告的 google 数据流的 apache beam 版本我们能拿到吗?
谢谢, 院长
谢谢, 院长
解决方法
Apache Beam 的 DirectRunner 应该非常接近 Dataflow 的环境,我们推荐这种类型的单进程流水线测试。
我的建议是一样的:使用 DirectRunner 进行功能测试。
您也可以使用 Dataflow 运行器,但这听起来像是一个完整的集成测试。根据数据源/数据接收器的不同,您可以向它传递模拟实用程序。
BigQueryIO 就是一个很好的例子。它有 a withTestServices
method that 可以用来传递模拟外部服务行为的对象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。