数据流 bigquery 单元测试

Posted

技术标签:

【中文标题】数据流 bigquery 单元测试【英文标题】:dataflow bigquery unit tests 【发布时间】:2017-04-29 05:45:26 【问题描述】:

我有一个数据流管道,它从 GCS 中的文件中读取数据,对其进行转换并将结果放入 BQ。 我创建了检查预期 TableRows 是否在 PCollection 中的测试,但是 如何根据我提供的 db 架构验证将写入 BQ 的数据是否正确?

        tableRowPCollection.apply(BigQueryIO.Write.named("Write to table").to(options.getTableName())
            .withCreateDisposition(CREATE_IF_NEEDED).withSchema(someSchema).
                    withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));

【问题讨论】:

【参考方案1】:

我假设您想验证BigQueryIO 本身不会损坏您的PCollection 中的数据?

我认为没有什么好的方法可以做到这一点——当然,除了实际运行管道,然后读回数据并验证它(你可以使用BigQueryIO.Read 来读回数据和一些PAssert 来验证它) - 但我假设您正在寻找更轻量级的东西。

不过,您也可以看看 BigQueryIO 本身是如何测试的,例如this test。重要的方法是 withTestServicesBigQueryIO.ReadBigQueryIO.Write 都有) - 但是,它是包本地实现细节,不打算供管道编写者使用。

【讨论】:

以上是关于数据流 bigquery 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

Nunit中如何进行事务性单元测试

数据库基础单元测试策略:在单元测试和测试数据之间截断表

Xcode单元测试:尝试将测试数据从单元测试写入项目文件夹时权限被拒绝

单元测试

Android怎样进行单元测试

软件测试第三次