14

我已经使用 Pentaho Kettle 很长一段时间了,以前我所做的转换和工作(使用勺子)非常简单,从 db 加载、重命名等,将内容输入到另一个 db。但是现在我一直在做一些更复杂的计算的转换,我现在想以某种方式进行测试。

所以我想做的是:

  1. 设置一些测试数据
  2. 运行转换
  3. 验证结果数据

一种选择可能是制作一个测试转换的 Kettle 测试工作。但由于我的转换与 java 项目有关,我更愿意从 jUnit 运行测试。所以我考虑过做一个 jUnit 测试:

  1. 设置测试数据(使用 dbunit)
  2. 运行转换(从命令行使用 kitchen.sh)
  3. 验证结果数据(使用 dbunit)

但是,这种方法需要测试数据库,这些数据库并不总是可用(oracle 等昂贵/遗留数据库)我更喜欢的是,如果我可以模拟或将一些存根测试数据传递给我的输入步骤。

关于如何测试 Pentaho 水壶转换的任何其他想法?

4

3 回答 3

4

jira.pentaho.com 上的某个地方有一个 jira(我手头没有),它正是要求这个 - 但可惜它还没有实现。

所以你确实有正确的解决方案——我还会添加 jenkins 和一个 ant 脚本来将它们结合在一起。我对报告测试做了类似的事情——我实际上有一个 pentaho 作业加载数据,然后它执行报告,然后将输出与已知输出进行比较并报告通过/失败。

于 2012-04-03T15:21:06.303 回答
3

如果您将水壶作业分为两个阶段:

  • 将数据加载到流中
  • 处理和更新数据

您可以在加载数据流步骤结束时使用复制行来生成结果,并在流程步骤开始时从结果中获取行以获取行。

如果您这样做,那么您可以使用任何方式加载数据(kettle 转换、从 ant 脚本调用的 dbunit),并且可以模拟您想要的任何数据库表。

我用它来测试我编写的一些 ETL 脚本,它工作得很好。

于 2013-04-05T15:25:54.373 回答
1

您可以使用数据验证器步骤。当然不是一个完整的单元测试套件,但我认为有时对快速检查数据完整性很有用。您可以一次运行多个测试。

对于更“严肃”的测试,我将推荐@codek 答案并在 Jenkins 下执行您的水壶。

数据验证器步骤截图

于 2015-07-14T18:10:21.497 回答