Jmeter入门级--函数助手的使用

启动jmeter后,可以在JMeter的选项菜单中找到函数助手对话框(快捷键:Ctrl+Shift+F1)

 可以从下拉列表中选择一个函数,并为其参数设定值,不同函数要求的参数也不同;

表格的左边一列是函数参数的简要描述,右边一列是供用户填充参数的值

Tips:

  • 如果参数包含逗号,那么一定要使用 \ 来转义,否则 JMeter 会把它当作一个参数分隔符;
  • 实际使用时,一般通过函数助手对话框来生成函数字符串,不容易出错。
  • 一些函数中此项参数:Name of variable in which to store the result (optional)  变量名 :用于后续调用该函数的变量名称

JMeter 中的函数主要分为如下几类:

 

 

__setProperty

函数__setProperty用于设置JMeter属性的值。函数的默认返回值是空字符串,因此该函数可以被用在任何地方,只要对函数本身调用是正确的。

通过将函数可选的第3个参数设置为"true",函数就会返回属性的原始值。属性对于JMeter是全局的,因此可以被用来在线程和线程组之间通信。

_CSVRead

  • 从一个 CSV 文件中返回一个字符串,支持多个文件名。
  • 当第一次调用该函数时,文件将被打开并读取到一个内部数组中。如果检测到空行,这将被视为文件的末尾。
  • 所有对同一文件名的后续引用都使用相同的内部数组,文件名区分大小写。
  • 每个线程都有自己的指向文件数组中当前行的内部指针。当线程首先引用文件时,它将在数组中分配下一个空闲行,因此每个线程将访问与所有其他线程不同的行(除非数组中的线程多于行)。

 

 

 注意:

该函数不适合用于大型文件,因为整个文件都存储在内存中。

对于较大的文件,最好使用 CSV Data Set Config 或者 StringFromFile。

默认情况下,该函数在每个逗号处拆分行。如果要输入包含逗号的列,则需要通过设置属性将分隔符更改为不出现在任何列数据中的字符,修改 jmeter.properties 文件中的 csvread.delimiter=。

1.点击选项----选择 函数助手对话框,选择_CSVRead

CSV file to get values from | * ,这个参数是文件的路径,csv的文件分隔符是逗号,也可以使用txt文本进行逗号分隔

CSV文件列号| next| *alias  取列数,一一对应

点击生成,这里是从0开始取值的,0代表取的文件第一列,1代表取的第二列

 

 

  2.将${__CSVRead(E:\JMeter\BI\schoolName.txt,0)}复制

 

  设置线程组--线程数

  将依次取不同入参值请求

 __StringFromFile

  • 用于从文本文件中读取字符串,每次读取一行,支持读取多个文件。
  • 使用配置元件CSV Data Set Config ,也能达到相同的目的,而且方法更简单,但是它目前不支持多个输入文件。
  • 每次调用函数,都会从文件中读取下一行。当到达文件末尾时,函数又会从文件开始处重新读取,直到最大循环次数。如果在一个测试脚本中对该函数有多次引用,那么每一次引用都会独立打开文件,即使文件名是相同的(如果函数读取的值,在脚本其他地方也有使用,那么就需要为每一次函数调用指定不同的变量名)。
  • 如果在打开或者读取文件时发生错误,那么函数就会返回字符串 **ERR**。
  • 启动序号:初始的序列号,如果省略,那么结束序列号就代表文件的循环读取次数。
  • 末端序号:结束序列号,如果省略,那么序列号会无限增长。

 

  • #:插入数字,没有前导零或空格。
  • 000:插入数字,数字不足三位时,将插入前导零补足三位;数字超过三位时,则插入数字实际位数。

用法说明:

 上面的 . 是格式化字符,必须用单引号括起来

__RandomFromMultipleVars

1.首先要创建用户定义的变量,如下图

 

  2.创建函数 ${__RandomFromMultipleVars(name1|name2|name3,name)},函数中几个变量名用‘|’隔开,这个函数的意义在于:在设定的几个值中随机使用其一,如下在name1、nema2、name3中随机使用

  3.在body中使用:"name":"${__RandomFromMultipleVars(name1|name2|name3,name)}",必须和用户定义的变量一起使用

 __time

${__time(,)} 实时获取时间,精确到 13 位数(“毫秒” 格式)时间戳:1555655388515

${__time(/1000,)} 实时获取时间,精确到 10 位数(“秒” 格式)时间戳:1555655438

  ${__time(yyyy-MM-dd HH:mm:ss:SSS,参数名)} 实时获取时间,格式化生成时间格式 yyyy-MM-dd HH:mm:ss:SSS (年-月-日 时:分:秒:毫秒)

 __TimeShift(格式,日期,移位,语言环境,变量):可对日期进行移位加减操作

“PT20.345S”解析为“20.345秒”

“PT15M”解析为“15分钟”

“PT10H”解析为“10小时”

“P2D”解析为“2天”

“P2DT3H4M”解析为“2天,3小时和4分钟”

“P-6H3M”解析为“-6小时+3分钟”

“-P6H3M”解析为“-6小时-3分钟”

“-P-6H + 3M”解析为“+6小时和-3分钟”

指定格式:

${__timeShift(yyyy-MM-dd HH:mm:ss,,PT20.345S,,)}:以指定格式创建当前日期,再加上20.345S

${__timeShift(dd-MM-y-HH-mm-ss,,P1DT3H4M,,)}:以指定格式创建当前日期,再加上一天,三小时和四分钟

${__timeShift(dd/MM/yyyy,,P-1D,,)}:以指定格式创建当前日期,减去一天

${__timeShift(dd/MM/yyyy,,P365D,,)}:以指定格式创建当前日期,再加上365天

  

 参考文件:https://blog.csdn.net/lijing742180/article/details/86579160

posted @ 2020-02-02 19:12  snoweveryday  阅读(2859)  评论(0编辑  收藏  举报