【发布时间】:2010-08-30 02:40:10
【问题描述】:
我可以对 Informatica Powercentre 工作流进行单元测试吗?
编辑: 更具体地说,我可以模拟源和目标并测试其间的步骤吗?例如。如果我有一个包含 Oracle 源和文本文件目标的工作流,我可以在没有 Oracle 和文本文件的情况下对其进行测试吗?
【问题讨论】:
标签: unit-testing etl informatica-powercenter
我可以对 Informatica Powercentre 工作流进行单元测试吗?
编辑: 更具体地说,我可以模拟源和目标并测试其间的步骤吗?例如。如果我有一个包含 Oracle 源和文本文件目标的工作流,我可以在没有 Oracle 和文本文件的情况下对其进行测试吗?
【问题讨论】:
标签: unit-testing etl informatica-powercenter
不,你不能。
当您创建和保存映射时,Informatica 会验证映射在语法上是否有效。如果不是,它将给您一条错误消息。在底部面板中查找错误。您可以通过转到映射菜单 > 验证来验证映射。
您可以类似地验证工作流程:工作流程菜单 > 验证。
要运行工作流,您必须使源和目标可用且已连接。如果您不想写入目标或不想进行全容量测试,您可以在会话级别使用“启用测试负载”(编辑 > 属性 > 启用测试负载)并设置“要测试的行数” .
【讨论】:
是的,您可以运行工作流程并测试输出目标表。 (在工作流管理器中,右键单击一个工作流,然后单击“从头开始运行工作流”。
工作流程成功后,查看目标中的数据以查看映射和转换是否正常工作。
就像任何其他单元测试一样,在运行工作流程之前,您需要确定源(和目标)中的记录以及目标中的预期结果。
例如,如果我想测试具有 SCD type2 逻辑的映射,您可以运行两次工作流程并根据需要更新源列,然后在运行工作流程后检查当前记录是否已正确更新,是否记录的历史版本的新行已正确更新。
【讨论】:
我们在 Informatica 中尝试做的是构建一个源文件,构建一个预期的输出文件,然后运行一个工作流来生成一个实际的输出文件。然后,我们对预期输出文件与实际输出文件进行字节码比较。我们在这里实际测试的是我们的映射逻辑是否按照我们认为应该实现的方式实现。
以下 python 脚本将进行测试:
import filecmp
import csv
import sys
testRepository = open('testRepository.txt','rb')
testReader = csv.reader(testRepository)
print 'Test Number\tResult'
for test in testReader:
print test[0] + '\t\t' + str(filecmp.cmp(test[1], test[2]))
不完全是模拟,但本质上是正确测试您的映射是否正确所必需的。映射的有效性由我的 Informatica 本身检查。
【讨论】: