我有一个csv文件,该文件将被处理并保存在DB中。我需要验证CSV vs DB的内容。 CSV文件具有
IDENTIFIER|AUDIT_ACTION|EMPLID|NAME|EFFDT|LAST_NAME|FIRST_NAME
PERSON_STG|A|731757|Abhijit |01-Oct-2010|SS|Abhijit
PERSON_STG|A|743910|Singh|02-May-2011|S|Arshita
.......................
DB的表具有CSV文件中每个值的列(例如Emplid
,Firstname
,lastname
)
我需要验证csv中的每个值是否都已用存储在数据库中的定界符分隔开。
我尝试过
能帮您比较CSV文件JDBC响应
答案 0 :(得分:1)
鉴于您的数据库中的数据如下所示:
mysql> select * from cvdata;
+------------+--------------+--------+---------+-------------+-----------+------------+
| IDENTIFIER | AUDIT_ACTION | EMPLID | NAME | EFFDT | LAST_NAME | FIRST_NAME |
+------------+--------------+--------+---------+-------------+-----------+------------+
| PERSON_STG | A | 731757 | Abhijit | 01-Oct-2010 | SS | Abhijit |
| PERSON_STG | A | 743910 | Singh | 02-May-2011 | S | Arshita |
+------------+--------------+--------+---------+-------------+-----------+------------+
2 rows in set (0.00 sec)
如果您在SELECT采样器中发出JDBC Request语句,其配置如下:
您将获得以下JMeter Variables(可以使用Debug Sampler和View Results Tree侦听器组合显示)
请参阅Debugging JDBC Sampler Results in JMeter文章,以了解有关在JMeter中使用JDBC请求结果的更多信息
Forever
将CSV Data Set Config添加为循环控制器的子代,并将其配置为:
以上配置假设您的CSV文件如下所示:
IDENTIFIER|AUDIT_ACTION|EMPLID|NAME|EFFDT|LAST_NAME|FIRST_NAME
PERSON_STG|A|731757|Abhijit |01-Oct-2010|SS|Abhijit
PERSON_STG|A|743910|Singh|02-May-2011|S|Arshita
如果不同-您将需要修改CSV数据集配置。
请注意,出于演示目的,我有意在Abhijit
之后留出空白以触发测试失败,如果要检查“快乐之路”,请将其删除
就这样了,您现在所要做的就是比较是否
IDENTIFIER
变量等于第一次迭代中的IDENTIFIER_1
变量IDENTIFIER
变量在第二次迭代中等于IDENTIFIER_2
AUDIT_ACTION
变量在第一次迭代时等于AUDIT_ACTION_1
AUDIT_ACTION
变量在第二次迭代中等于AUDIT_ACTION_2
为了检查这些内容,您可以添加JSR223 Sampler作为循环控制器的子代,并将以下代码放入“脚本”区域:
int loop = (vars.get('__jm__Loop Controller__idx') as int) + 1
if (!vars.get('IDENTIFIER_' + loop).equals(vars.get('IDENTIFIER'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('IDENTIFIER mismatch')
}
if (!vars.get('AUDIT_ACTION_' + loop).equals(vars.get('AUDIT_ACTION'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('AUDIT_ACTION mismatch')
}
if (!vars.get('EMPLID_' + loop).equals(vars.get('EMPLID'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('EMPLID mismatch')
}
if (!vars.get('NAME_' + loop).equals(vars.get('NAME'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('NAME mismatch')
}
if (!vars.get('EFFDT_' + loop).equals(vars.get('EFFDT'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('EFFDT mismatch')
}
if (!vars.get('LAST_NAME_' + loop).equals(vars.get('LAST_NAME'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('LAST_NAME mismatch')
}
if (!vars.get('FIRST_NAME_' + loop).equals(vars.get('FIRST_NAME'))) {
SampleResult.setSuccessful(false)
SampleResult.setResponseMessage('FIRST_NAME mismatch')
}
如果有任何不匹配,它将失败:
答案 1 :(得分:0)
CSV中的记录在数据库中的顺序不同。 DB有更多记录。因此,所有记录都不匹配。如何搜索CSV中的每个列,例如,必须搜索EMPLID值'731757',以查找DB中的所有EMPID值(如果找到),则应该通过断言。