Jmeter学习:文件类函数

一、__StringFromFile
  功能介绍:
  从文件中读取一行数据,所有线程共享行数,依次读取,默认路径为$JMETER_HOME/bin/
  ${__StringFromFile(参数 1,参数 2,参数 3,参数 4)}
  参数 1:文件路径(包括文件名),必选,可输入 java.text.DecimalFormat 的格式
  ①pin#'.'dat,表示匹配文件 pin1.dat,pin2.dat……pin999.dat
  ②pin000'.'dat,表示匹配文件 pin001.dat,pin002.dat……pin999.dat
  ③pin'.'dat# -> pin.dat1, ... pin.dat9 ... pin.dat999  
  参数 2:注册变量名,可选
  参数 3:起始序列号,可选
  参数 4:结束序列号,可选,若起始序列号为空,表示该文件循环计数的次数
  1.1  单文件顺序循环读取
  
   
  

   结果解释:

  1、当线程迭代次数大于该文件内行数时,回循环重复读取文件内容

  2、一个线程读取完毕,接下一个线程重新读取文件,可以理解为读取文件时数据是线程独立的。

  1.2  多文件顺序读取

  前提:这里准备了3个文件,依次取 test1.txt,test2.txt,test3.txt 三个文件,每个文件3行数据一共9行,文件内容如下:

  

  1.2.1 情况一:采样迭代次数小于所有文件总行数

  

  

       

  结果解释:

   1、预设采样总迭代次数小于所有文件总行数,采样结果以迭代次数为准。

   2、所有线程逐个迭代,一个线程迭代完成后,下一个线程继续迭代读取剩下的文件内容。

  1.2.2 情况二:采样迭代次数大于所有文件总行数

  

  

  

   结果解释:

   1、预设采样总迭代次数大于所有文件总行数,采样结果以文件行数为准。

   2、这里有9行,但实际读取结果为8行的原因是Jmeter自动将第一个文件的第一行忽略了,不影响测试结果。

   3、印证了场景一结论第三条,线程一6次迭代完成后,线程二迭代开始并迭代剩下的2条数据,没有发生重复迭代。

  1.3  单文件循环读取,取 test1.txt 文件中的下一行,并循环 10 次
  1.3.1 文件总行数小于线程总迭代次数

   

   

   

   结果解释:

   1、当文件总行数小于线程总迭代次数时,以总行数为准

   2、印证了场景一结论第三条,线程一20次迭代完成后,线程二迭代开始并迭代剩下的9条数据,没有发生重复迭代。

   1.3.2 文件总行数大于线程总迭代次数

   

   

   

    结果解释:

   1、文件总行数大于线程总迭代次数时,以总迭代次数为准

   2、印证了场景一结论第三条,线程一10次迭代完成后,线程二继续迭代直到迭代完成,没有发生重复迭代。

二、__StringToFile

  功能介绍:
  将字符串写入文件,包括覆盖和追加两种方式,换行需要加上\n
  ${__StringToFile(参数 1,参数 2,参数 3,参数 4)}
  参数 1:文件路径(包括文件名),必选
  参数 2:要写入的内容
  参数 3:true 表示追加,false 表示覆盖,默认为追加
  参数 4:文件为编码,默认为 utf-8
  

       通过循环控制器循环写入:

  

   注意:如路径下不存在文件,文件将会被创建。

三、__FileToString

  功能介绍:
  将文件转换为字符串,默认路径为$JMETER_HOME/bin/
  ${__FileToString(参数 1,参数 2,参数 3)}
  参数 1:文件路径(包括文件名),必选
  参数 2:文件编码,如:utf-8,可选
  参数 3:存储的变量名,可选
  

   

四、__CSVRead

  功能介绍:
  将文件转换为字符串,默认路径为$JMETER_HOME/bin/
  ${__CSVRead(参数 1,参数 2)}
  参数 1:文件路径(包括文件名),必选
  参数 2:第几列,必选
  

   

   结果解释:

  采用${__CSVRead(wade/18.5/csv.txt,0)}${__CSVRead(wade/18.5/csv.txt,next)} 的方式实现自动获取下一行数据,搭配循环。

  

posted @ 2023-02-24 10:43  Chaman囍  阅读(330)  评论(0编辑  收藏  举报