jmeter 参数化方式

jmeter 参数化

入参经常变化的话,则可以设置成一个变量,方便统一修改管理;如果入参要求随机或可多种选择,则通过函数生成器或者读取文件形成一个变量。所以参数化有四种方式:用户定义的变量、函数生成器、读取文件。


(1)  用户定义的变量

需要添加配置元件config element->用户定义的变量user defined variables。



(2)函数生成器

打开函数助手:options->function helper dialog

函数助手功能,可以调用函数生成一些有规则的数据。常用的几个函数有_uuid、_random、_time。_uuid会生成一个随机唯一的id,比如接口请求可加一个唯一的请求id唯一的响应id进行一一对应;随机数_random,可以在你指定的一个范围里取随机值;取当前时间_time,一些时间类的入参可以使用,如{__time(,)}是生成精确到毫秒的时间戳、{__time(/1000,)}是生成精确到秒的时间戳、${__time(yyyy-MM-dd HH:mm:ss,)} 是生成精确到秒的当前时间。


(3)从文件读取

 在线程组里面添加配置元件->CSV Data Set Config 

 其中Recycle on EOF:设置True后,允许循环取值

 

  具体的例子如下所示:




 

常用函数

一、"_csvRead"函数

类似配置元件CSV Data Set Config

  csvRead函数是从外部读取参数,csvRead函数可以从一个文件中读取多个参数。

  下面具体讲一下如何使用csvread函数:

  1.新建一个csv或者text文件,里面保存要读取的参数,每个参数间用逗号相隔。每行表示每一组参数,每列表示每种参数:

  比如:

  admin,123

  manager,456

  2.打开Jmeter的函数助手,选择csvread函数:

  其中:

  CSV file to get values from | *alias:要读取的文件路径,应该是绝对路径

  CSV文件列号| next| *alias:从第几列开始读取,注意第一列是0

  点击生成按钮,则生成了函数,为:${__CSVRead(D:\test.txt,1)}csvread就是从test.txt文件中读取第一列的参数。以此类推。

  3.将生成的参数拷贝到需要参数化的参数的值一项中,如果要修改要读取的参数的列,则可以直接在参数值中修改数字而不用重新在csvread函数生成中修改。

  4.jmeter执行的时候,如果有多个线程,顺序读取第一行的数字,如果线程组多余文件中的行数,则循环读取。

  5.利用该功能,可以实现不同参数需要不同参数值的问题,只需要在需要参数化的地方将生成的CSVRead函数字符串粘贴过去,然后修改表示第几列的数字就可以了。


 二、"_ StringFromFile"函数

  功能:这个函数是从一个文件中取到一个字符串,这个函数和LoadRunner中的File变量差不多,不过LoadRunner可以直接从数 据库中查询记录,自动生成文件,而Jmeter需要我们借助第三方工具生成文本作用:可以用来实现参数化http请求发送的参数,使得在Jmeter运行 时参数化了的参数在每个线程读取不同的内容。如果某个参数每次发送请求的时候不能重复才可以存储到数据库中,则用这个功能十分方便。

  使用:

  1.首先需要一个文本文件,可以手工生成,也可以通过数据库查询工具查出结果,然后拷贝到一个文本文件中。

  2.点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉框中选择“_StringFromFile”

  3.设置“_StringFromFile”函数的值,具体如下:

    ● 输入文件的全路径:输入前面生成的文件的完整路径,即文件路径+文件名.扩展名(文件路径可以写成相对路径或绝对路径,默认读取位置为/bin下)

    ● 函数名称:输入某个名称,用于存储在测试计划中其他的方式使用的值。

    ● 文件开始结束序号:第三,第四个参数是文件开始的序号,也就是文件读取的其起始行数。第四个参数是文件的结束序号,也就是要读取文件的最后行。假如咱们生 成的文本文件有200行,如果开始序号设置成50,结束行设置成150,那么这个函数会按顺序从第50行,一直读取到150行,如果测试的循环次数超过了 文件行数,比如循环了102次,那么最后一次循环读取的文件内容和第一次的一样,函数会自动循环读取。文件的起始序号和结束序号也可以不用设置,这样函数 会从第一行读取到最后一行,然后再循环读取。

  4.注意:该函数每次读取文件中的一行,如果线程组中有多个线程,则每个线程顺序读取一行,如果有多次循环,则每次循环顺序读取一行。

 

  三、"_Random"函数

  功能:这个函数是从某个数字段随机读取数据替换参数,可以利用在测试需要添加多条数据记录而且某些字段需要唯一性的测试脚本中,随机生成的参数是数字

  作用:可以用来实现参数化http请求发送的参数,使得在Jmeter运行时参数化了的参数在每个线程去不同的随机数。如果某个参数每次发送请求的时候不能重复才可以存储到数据库中,则用这个功能十分方便。

  使用:

  1.点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉框中选择“_Random”。

  2.配置“_Random”函数,第一个参数是“一个范围内的最小值”,即所要取的随机数的最小值,我们设置成1;第二个参数是“一个范围内的 最大值”,即所要取的随机数的最大值,我们设置成100;第三个参数是“函数名称”,即用于存储在测试计划中其他的方式使用的值,我们设置成Random。设置好上面的三个参数后,点击“生成”按钮,这样就会在对话框的最下面生成一个字符串“${__Random(1,100,Random)}”,在我们编写的脚本中,找到要替换的参数,把它的值换成前面生成的字符串就可以了,然后每次运行 的时候,这个参数会变成一个1到100之间的随机数。


  四、"_counter"函数

  功能:这个函数是一个计数器,用于统计函数的使用次数,它从1开始,每调用这个函数一次它就会自动加1,它有两个参数,第一个参数是布尔型的, 只能设置成“TRUE”或者“FALSE”,如果是TRUE,那么每个用户有自己的计数器,可以用于统计每个线程歌执行了多少次。如果是FALSE,那就 使用全局计数器,可以统计出这次测试共运行了多少次。第二个参数是“函数名称”

  格式:${__counter(FALSE,test)}

  使用:我们将“_counter”函数生成的参数复制到某个参数下面,如果为TRUE格式,则每个线程各自统计,最大数为循环数,如果为FALSE,则所有线程一起统计,最大数为线程数乘以循环数


  五、"_time”函数

  功能:Jmeter运行时取当前时间到变量,利用该功能,可以将某个参数增加time函数,然后用该参数作为查询条件查询,然后以该参数作为断 言,这样可以使得断言更精确,因为时间实时变化的,使用该方法,需要注意的是,要先添加一个全局的用户参数,具体在断言操作中有描述。

  格式:${__time(MMddmmss,TEST)}

  使用:添加jmeter的time函数,选择选项——函数助手,然后选择__time函数

  在“ormat string for SimpleDateFormat (optional)”中输入值“MMddhhmmss”,表示取月日时分秒。

  然后,点击生成,则生成了time参数。


  六、"_intSum”函数

  功能:用于计算多个整数的和,可以是计算正整数和负整数的和,它有N个参数,最少有3个参数,最多不限。最后一个参数是函数名称,前面的其它参 数是要求和的整数。这个函数在函数对话框中只显示3个参数,如果要计算多个整数,可以通过添加参数实现,不过最后一个参数一定要是函数名称。再添加的参数 会在函数名称后面,这个时候,需要我们手动将函数名称参数放到最后一个。

格式:${__intSum(1,100,test)}

 

 

Jmeter消息类的功能

${__threadNum}    :得到testplan的线程数

${__machineName}  :得到主机名字

${__time(EEE\, d MMM yyyy)}  :返回一定格式的时间信息 。${__log(Message)}:写入log文件”…thread Name : Message” 。${__log(Message,OUT)}:输出到命令行。${__log(${VAR},,,VAR=)}:以“…thread Name VAR=value”形式输出到log文件。

Jmeter输入类的功能

这里Jason只介绍下${__XPath(File,//XX/XX/@XX)}  :XPath方式读了File文件的相应属性.

Jmeter计算类的功能

${__counter(X)}    :自增函数,X(true/false)来控制是否分配线程来增加.

${__Random(X,Y,Z)} :随机函数,X为最小值,Y为最大值,Z为存储的变量名.

Jmeter的Properties文件使用的功能类

之前Jason在Jmeter的P函数及properties文件介绍了相关的内容.

Jmeter的变量操作类的功能

${__split(X,Y,Z)}   :用来分割变量用的,X为需要分割的变量或者String,Y为存储的变量名,Z为分割符.

${__V}              :的使用主要来源于变量中含变量的情况eg. ${A${N}} 可以用${__V(A${N})} 来显示成功.

${__eval}           :主要用在对SQL的处理上,具体使用看下面的例子:

* name=Smith   * column=age * table=birthdays * SQL=select ${column} from ${table} where name=’${name}’

用${__eval(${SQL})}可以得到”select age from birthdays where name=’Smith’”.

Jmeter的String操作类的功能

${__regexFunction}  :对前一个响应进行正则规约提取.具体参考这里.

${__char},${__unescape},${__unescapeHtml},${__escapeHtml} :主要用来对字符的编码格式的转换的.

Jmeter的脚本操作类的功能

${__javaScript(X,Y)} :主要是使用Javascript来做一些简单的操作.例如计算和字符处理等等.

eg. ${__javaScript(‘${sp}’.slice(7\,99999))}

${__BeanShell(X)}     :主要是利用BeanShell来实现一些具体的功能,BeanShell具体我们可以参考BeanShell.

文章出自

https://blog.csdn.net/github_27109687/article/details/71968662

https://blog.csdn.net/smj811504083/article/details/64126371

猜你喜欢

转载自blog.csdn.net/yiqin3399/article/details/80307451