08、jmeter函数助手详解

JMeter提供了丰富的函数来辅助性能测试中的参数化,如__Random生成随机数,__time获取当前时间等。函数助手不仅用于参数化,还涉及字符编码、格式转换等功能。文章列举了信息类、输入类、计算类等多个函数类别及其应用场景。
摘要由CSDN通过智能技术生成

在性能测试过程中,为了模拟真实的用户,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化。JMeter中的配置元件与前置处理器都能帮助我们实现参数化,为了能够更好的帮助我们进行参数化,JMeter提供了一组函数来帮助我们生成需要的数据,这些函数在函数助手面板进行选择和编辑。当然函数助手的功能不仅仅是进行参数化,还可以帮我们进行字符编码,格式转化,获取运行时参数等功能。

 

1、函数助手中的函数分类

JMeter中大概分为七个类型的函数:

(1)信息类

主要用于获取一些常用的基本信息或是日志输出控制。

1、__threadnum函数:只是简单地返回当前线程的编号。

2、__samplerName函数:获取当前请求的名称。

3、__machineIP函数:获取本机的IP地址。

4、__machineNmae函数:返回本机的主机名。

5、__time函数:可以通过多种格式返回当前时间。

6、__log函数:会记录一条日志,并返回函数的输入字符串。

7、__logn函数:会记录一条日志,并返回空字符串。

8、__TestPlanName函数:获取当前测试计划。

(2)输入类

主要用于从外部文件读取数据,进行参数化。即:用于读取文件。

1、__StringFromFile函数:可以被用来从文本文件中读取字符串,这对需要大量可变数据的测试很有用。

2、__FileToString函数:可以被用来读取整个文件。每次对该函数的调用,都会读取整个文件。

3、__CSVRead函数:会从CSV文件读取一个字符串(请注意与StringFromFile 的区别)。

4、__XPath函数:读取XML文件,并在文件中寻找与指定XPath相匹配的地方。每调用函数一次,就会返回下一个匹配项。到达文件末尾后,会从头开始。

(3)计算类

用于计数、求和等操作。

1、__counter函数:每次调用计数器函数都会产生一个新值,从1开始每次加1。

2、__intSum函数:可以被用来计算两个或者更多整数值的和。

3、__longSum函数:可以被用来计算两个或者更多长整型值的合。

4、__Random函数:会返回指定最大值和最小值之间的随机数。

5、__RandomFromMultipleVars函数:从一组数据中提取一个数据。

6、__RandomString函数:生成随机字符串。

7、__UUID函数:生成随机的唯一的UUID。

(4)脚本类

主要用于调用外部脚本或是解析执行脚本,例如:groovy、beanshell等 。

1、__groovy函数:执行groovy脚本。会执行传递给它的脚本,并返回结果。

2、__BeanShell函数:会执行传递给它的脚本,并返回结果。

3、__javaScript函数:可以用来执行JavaScript代码片段(非Java),并返回结果值。

4、__jexl2函数:可以用于执行JEXL2表达式,并返回执行结果。

5、__jexl3函数:可以用于执行JEXL3表达式,并返回执行结果。

(5)属性类

用于读取和设置JMeter的配置。

1、__property函数:会返回一个JMeter属性的值。如果函数找不到属性值,而又没有提供默认值,则它会返回属性的名称。

2、__P函数:是一个简化版的属性函数,目的是使用在命令行中定义的属性。不同于函数__property,本函数没有提供选项用于设置保存属性值的变量。

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

(6)变量类

对变量进行操作,主要用于验证变量表达式引用是否正确。

1、__split函数:会通过分隔符来拆分传递给它的字符串,并返回原始的字符串。如果分隔符紧挨在一起,那么函数就会以变量值的形式返回"?"。

2、__V函数:可以用于执行变量名表达式,并返回执行结果。

3、__eval函数:可以用来执行一个字符串表达式,并返回执行结果。如此一来,用户就可以对字符串中的变量和函数引用做出修改。

4、__evalVar函数:可以用来执行保存在变量中的表达式,并返回执行结果。

(7)字符串类

用于对字符串的处理操作。

1、__regexFunction函数:正则表达式函数可以使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值),函数会返回一个有模板的字符串,其中携带有可变的值。还可以被用来保存值,以便供后续使用。

2、__escapeOroRegexpChars函数:将一些Java正则表达式引擎不识别的正则式进行转换,转换过程中使用了ORO正则表达式库,这个库也支持Perl5兼容的正则表达式语法。(Perl是一种高级、通用、直译式、动态的脚本语言,内部集成了正则表达式的功能)

3、__char函数:会将一串数字转换成Unicode字符。

4、__unescape函数:用于反转义Java-escaped字符串。

5、__unescapeHtml函数:用于反转义一个包含HTML实体的字符串,将其变为包含实际Unicode字符的字符串。

6、__escapeHtml函数:用于转义字符串中的字符(使用HTML实体)。即:使用html coding编码目标字符串。

7、__escapeXml函数:使用XML coding编码目标字符串。

8、__urldecode函数:urlcode解码。

9、__urlencode函数:编码为urlcode。

2、常用

(1)__Random函数

__Random函数会返回指定最大值和最小值之间的随机数。参数如下表所示:

函数参数描述是否必需
最小值最小数值
最大值最大数值
变量名重用函数计算值的引用名

 

举例:

 这里的意思是0到10之前的随机整数,并把值赋值给n。这里也可以不传n

 

 我们这里看下响应:

这里aaa的值变为8,同时把值赋值给n,n的值也为8

 

(2)__RandomString函数

主要是用来生成随机字符串,使用格式:

${__RandomString(10,abcde,myResult)},其中

  • 第一个参数10表示希望生成的字符串的长度,必填
  • 第二个参数abcde,表示从这些字符中随机组合,非必填
  • 第三个参数myResult,表示生成的字符串保存在这个变量中,非必填

 我们看下响应:

 

(3)__time函数

这个也是一个常用的

${__time(,)}   //获取当前时间戳 默认13位数 
${__time(/1000,)}  // 获取当前时间戳10位
${__time(yyyy-MM-dd HH:mm:ss)}  //获取当前时间,年月日时分秒格式
${__time(yyyy-MM-dd HH:mm:ss,times)} // times代表后面进行再次调用的参数名称
${__time(yyyy-MM-dd,times)}  //获取当前时间,年月日
${__time(yyyy-MM,times)}   //获取当前时间,年月
${__time(yyyy,times)}  //获取当前时间,年
${__time(MM,times)}   //获取当前时间,月
${__time(dd,times)}   //获取当前时间,日
${__time(yyyy,nowYear)}  //获取当前本年
${__time(M,nowMonth)}    //获取当前本月
${__time(d,nowDate)}     //获取当前本日
${__time(H,nowHour)}     //获取当前小时
${__time(m,nowMinute)}   //获取当前分钟
${__time(s,nowSecond)}   //获取当前秒

比如我们现在要获取当前时间10位的时间戳:${__time(/1000,)} (此处逗号可以省略)

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter中,参数化是一种将固定的值替换为动态值的方法,以便在每次请求中使用不同的参数值。参数化可以用于多种情况,例如在测试登录功能时,可以将用户名和密码参数化,以便在每次请求中使用不同的值。 以下是JMeter中四种常用的参数化方法: 1. CSV Data Set Config/CSV数据文件设置: - 首先,创建一个CSV文件,将需要参数化的值存储在文件中,每行一个值。 - 在JMeter中,添加CSV Data Set Config元件,并配置它以指向CSV文件。 - 在测试计划中的请求中,使用`${变量名}`的形式引用CSV文件中的值,例如`${username}`和`${password}`。 - 在每次请求中,JMeter将从CSV文件中读取下一个值,并将其用作参数的值。 2. 函数助手: - JMeter提供了许多内置函数,可以用于生成动态值。 - 在测试计划中的请求中,使用`${__函数名(参数)}`的形式引用函数生成的值,例如`${__Random(1,100)}`可以生成1到100之间的随机数。 3. 用户参数: - 在测试计划中,添加用户参数元件,并在其中定义需要参数化的变量和对应的值。 - 在请求中,使用`${变量名}`的形式引用用户参数中定义的变量,例如`${username}`和`${password}`。 4. 用户自定义变量: - 在测试计划中,添加用户自定义变量元件,并在其中定义需要参数化的变量和对应的值。 - 在请求中,使用`${__V(变量名)}`的形式引用用户自定义变量中定义的变量,例如`${__V(username)}`和`${__V(password)}`。 通过使用这些参数化方法,可以轻松地在JMeter中实现参数化,以模拟不同的用户行为和数据输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值