使用Jmeter验证保存在DB中的CSV文件内容

使用Jmeter验证保存在DB中的CSV文件内容,jmeter,jmeter-3.2,jmeter-4.0,Jmeter,Jmeter 3.2,Jmeter 4.0,我有csv文件,它将被处理并保存在数据库中。我需要验证CSV与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文件中

我有csv文件,它将被处理并保存在数据库中。我需要验证CSV与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中的每个值是否用分隔符分隔并保存在DB中

我试过了

  • 将csv文件放入SFTP并进行处理
  • JDBC配置和JDBC请求从数据库获取值
  • 您可以帮助比较CSV文件JDBC响应吗

  • 假设数据库中有如下数据:

    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)
    
    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
    
  • 如果在采样器中发出一条语句,配置如下:

  • 您将得到以下结果(可以使用调试采样器和查看结果树侦听器组合可视化)

    有关在JMeter中使用JDBC请求结果的更多信息,请参阅本文

  • 向测试计划中添加一个,并将其配置为永远迭代
  • 添加为循环控制器的子级,并将其配置为:

    上述配置假定您的CSV文件如下所示:

    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)
    
    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\u 1
      变量
    • IDENTIFIER
      变量在第二次迭代时等于
      IDENTIFIER_2
    • AUDIT\u ACTION
      变量等于第一次迭代时的
      AUDIT\u ACTION\u 1
    • AUDIT\u ACTION
      变量等于第二次迭代时的
      AUDIT\u ACTION\u 2
    • 等等
    为了检查这些,您可以添加a作为循环控制器的子级,并将以下代码放入“脚本”区域:

  • 如果出现任何不匹配,它将失败:


    CSV中的记录在DB中的顺序不同。DB有更多的记录。因此,所有记录都不匹配。如何循环CSV中的每个列(例如EMPLID值“731757”)必须搜索数据库中的所有EMPID值,如果找到,则断言应该通过


    具体问题是什么?不清楚这与JMeter有何关系?您可以发布您正在尝试处理的实际脚本片段吗?我需要验证csv中的值是否成功存储在DB中。我已将JDBC输出值写入CSV文件-DB.CSV。我已经尝试了响应断言-${uu FileToString(PathtoOriginalCSVfile,,empid)}应用于Jmeter变量empid和模式来测试-${uu FileToString(DB.csv.,,,)}。断言失败,因为JDBC输出值有更多记录。