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

时间:2018-08-07 15:25:28

标签: jmeter jmeter-3.2 jmeter-4.0

我有一个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文件中每个值的列(例如EmplidFirstnamelastname

我需要验证csv中的每个值是否都已用存储在数据库中的定界符分隔开。

我尝试过

  1. 将csv文件放入SFTP中并得到处理
  2. JDBC配置和JDBC请求以从DB获取值

能帮您比较CSV文件JDBC响应

2 个答案:

答案 0 :(得分: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. 如果您在SELECT采样器中发出JDBC Request语句,其配置如下:

    JMeter JDBC Select Statement

  3. 您将获得以下JMeter Variables(可以使用Debug Sampler和View Results Tree侦听器组合显示)

    JMeter Variables from CSV

    请参阅Debugging JDBC Sampler Results in JMeter文章,以了解有关在JMeter中使用JDBC请求结果的更多信息

  4. 在测试计划中添加Loop Controller并将其配置为迭代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之后留出空白以触发测试失败,如果要检查“快乐之路”,请将其删除

    < / li>
  6. 就这样了,您现在所要做的就是比较是否

    • 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

答案 1 :(得分:0)

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

enter image description here