使用 Jmeter 验证数据库中保存的 CSV 文件内容

问题描述 投票:0回答:2

我有 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 中由分隔符分隔的每个值是否保存在数据库中。

我已经尝试过了

  1. 将 csv 文件放入 SFTP 并进行处理
  2. 从数据库获取值的 JDBC 配置和 JDBC 请求

您可以帮助了解如何比较 CSV 文件 JDBC 响应吗

jmeter jmeter-3.2 jmeter-4.0
2个回答
1
投票
  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)
    
  2. 如果您在 JDBC Request 采样器中发出 SELECT 语句,配置如下:

    JMeter JDBC Select Statement

  3. 您将获得以下JMeter变量(可以使用调试采样器和查看结果树侦听器组合进行可视化)

    JMeter Variables from CSV

    请参阅在 JMeter 中调试 JDBC 采样器结果 文章,了解有关在 JMeter 中使用 JDBC 请求结果的更多信息

  4. 循环控制器添加到您的测试计划中并将其配置为迭代
    Forever
  5. 添加 CSV Data Set Config 作为循环控制器的子项并进行如下配置:

    JMeter 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
    后面留了一个空格,以触发测试失败以用于演示目的,如果您想检查“快乐路径”,请将其删除

  6. 差不多就这样了,现在你要做的就是比较if

      第一次迭代时
    • 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')
    }
    

如果有任何不匹配,它将失败:

JMeter JSR223 Sampler Failure


0
投票

CSV 中的记录与 DB 中的顺序不同。 DB有更多记录。所以所有记录都不匹配。如何循环 CSV 中的每一列,例如 EMPLID 值“731757”必须搜索 DB 中的所有 EMPID 值,如果找到,则断言应该通过。

在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.