代码之家  ›  专栏  ›  技术社区  ›  sdgd

根据标准,仅将所需的数据行从CSV文件传递给Jmeter

  •  0
  • sdgd  · 技术社区  · 8 年前

    我有一个csv文件,其输入格式如下(第一行没有标题):

    India,QA,1200,
    India,QA1,1201,
    India,QA2,1202,
    USA,Dev1,5580,
    USA,Dev2,5580,
    AUS,Dev3,3300,
    AUS,Dev4,3301,
    

    我已配置 CSV Data Set Config 组件和已给出各自的路径和变量名详细信息。以下快照:

    enter image description here

    从命令行参数中,我将调用Jmeter jmeter.bat -t C:\Users\Dev\Desktop\JI\testscript.jmx -JCountry=India 还有一个参数叫做 JCountry=India .

    我想过使用 If Controller 但是,我如何检查第一行的csv文件,当有匹配时,将这些详细信息发送到脚本。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Dmitri T    8 年前

    最简单的选择是动态生成CSV文件,只需 India 线

    1. 添加 setUp Thread Group 你的测试计划
    2. 添加 Test Action 设置线程组的采样器(这样你就不会在.jtl文件中有额外的结果)
    3. 添加 JSR223 PreProcessor 作为测试动作采样器的孩子
    4. 将以下代码放入“脚本”区域:

      String country = props.get('Country')
      
      def originalCsvFile = new File('C:/Users/Dev/Desktop/JI/JVMDetails/Details.txt')
      def countryCsvFile = new File('C:/Users/Dev/Desktop/JI/JVMDetails/Country.txt')
      
      countryCsvFile.delete()
      
      originalCsvFile.eachLine {line ->
          if (line.startsWith(country)) {
              countryCsvFile << line
              countryCsvFile << System.getProperty('line.separator')
          }
      }
      
    5. 配置CSV数据集配置以使用 C:\Users\Dev\Desktop\JI\JVMDetails\Country.txt 因为这个文件只有那些以您定义的内容开头的行 Country

    更多信息:

        2
  •  1
  •   Ori Marko    8 年前

    您需要循环浏览CSV,请参阅 example other examples . 作为第二个示例,在while条件中使用来自CSV的变量:${Country}。

    需要添加的内部循环 If Controller 有条件将国家变量与国家财产进行比较:

     ${__jexl3("${__P{Country}" == "${Country}")}
    

    对此进行检查,并在条件下使用_ujexl3或_ugroovy函数以获得性能