🔥Jmeter(二十五) - 从入门到精通 - JMeter函数 - 下篇(详解教程)

1.简介

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

JMeter提供了很多函数,如果能够熟练使用,可以为脚本带来很多方便。可以很方便的实现一些小功能,几乎可以用于测试计划中的任何元件。

JMeter函数是一种特殊值,可用于除测试计划外的任何组件。

函数调用的格式如下所示:

${__functionName(var1,var2,var3)}

其中,"__"是两个英文半角的下划线,functionName为函数名,括号内是函数的参数,无参数时可以不用括号,如${__UUID},其中参数视不同函数而定。

Tips:

如果参数包含逗号,那么一定要使用"\"来转义,否则JMeter会把它当作一个参数分隔符

实际使用时,可通过函数助手对话框选择函数,设置参数后,点击生成按钮生成函数字符串。 前两篇主要介绍常用函数的主要函数,这一篇宏哥简单的说一说其他有用的函数。

2.JMeter 中的常用函数中的其他函数

2.1 __machineName

__machineName函数__machineName返回本机的主机名;

1、我们先来看看这个 __machineName 长得是啥样子,路径:函数助手 > 选择__machineName,如下图所示:

2、关键参数说明

Name of variable in which to store the result(optional)为函数名称名称: 这里我们设置为任意有意义的,即用于存储在测试计划中其他的方式使用的值

3、实例

scss 复制代码
${__machineName()}

宏哥计算机名字:

2.2__machineIP

__machineIP返回电脑IP。

1、我们先来看看这个 __machineIP 长得是啥样子,路径:函数助手 > 选择__machineIP,如下图所示:

2、关键参数说明

Name of variable in which to store the result(optional)为函数名称名称: 这里我们设置为任意有意义的,即用于存储在测试计划中其他的方式使用的值

3、实例

宏哥电脑的IP:

2.3__base64Decode和__base64Encode

__base64Decode用于解密,__base64Encode用于加密

1、我们先来看看这个 __base64Decode \ __base64Encode 长得是啥样子,路径:函数助手 > 选择__base64Decode \ __base64Encode,如下图所示:

__base64Decode

__base64Encode

2、关键参数说明

第一个参数:被加密/解密的字符串

第二个参数:用于存储的变量名,不必填

2.4__V

函数__V可以用于执行变量名表达式,并返回执行结果。它可以被用于执行嵌套函数引用(目前JMeter不支持)。

1、我们先来看看这个 __V 长得是啥样子,路径:函数助手 > 选择__V,如下图所示:

2、关键参数说明

Name of variable (may include variable and function references): 变量名表达式

3、例如,如果存在变量A1、A2和N=1,则:

${A1}:能正常工作。

{A{N}}:无法正常工作(嵌套变量引用)。

{__V(A{N})}:可以正常工作。A${N}变为A1,函数 __V返回变量值A1。

2.5__evalVar

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

如此一来,用户可以从文件中读取一行字符串,并处理字符串中引用的变量。

1、我们先来看看这个 __evalVar 长得是啥样子,路径:函数助手 > 选择__evalVar,如下图所示:

3、例如,假设变量"query"中包含有"select <math xmlns="http://www.w3.org/1998/Math/MathML"> c o l u m n f r o m {column} from </math>columnfrom{table}",而 "column"和"table"中分别包含有"name"和"customers",那么${__evalVar(query)}将会执行"select name from customers"。

2.6__eval

函数__eval可以用来执行一个字符串表达式,并返回执行结果。

如此一来,用户就可以对字符串(存储在变量中)中的变量和函数引用做出修改。

1、我们先来看看这个 __eval 长得是啥样子,路径:函数助手 > 选择__eval,如下图所示:

2、关键参数说明

Text containing variable and function references: 包含变量和函数引用文本

3、例如,给定变量name=Smith、column=age、table=birthdays、SQL=select <math xmlns="http://www.w3.org/1998/Math/MathML"> c o l u m n f r o m {column} from </math>columnfrom{table} where name=' <math xmlns="http://www.w3.org/1998/Math/MathML"> n a m e ′ ,那么通过 {name}',那么通过 </math>name′,那么通过{__eval(${SQL})},就能执行"select age from birthdays where name='Smith'"。这样一来,就可以与CSV数据集相互配合,例如,将SQL语句和值都定义在数据文件中。

2.7__escapeHtml

函数__escapeHtml用于转义字符串中的字符(使用HTML实体)。支持HTML 4.0实体。帮我们把字符转换成HTML格式的字符,比如引号转换成HTML就是",比如空格就是 ,这样编码传给浏览器,浏览器就能识别引号和空格了。

1、我们先来看看这个 __escapeHtml 长得是啥样子,路径:函数助手 > 选择__escapeHtml,如下图所示:

2、关键参数说明

String to escape:待转义的字符串;

3、实例

(1)使用函数助手,生成我们要调用函数的表达式,要转换 "中国", 如下图所示:

(2)建立测试计划开始调用函数,我们转换了"中国",如下图所示:

(3)保存测试计划,点击运行Jmeter,查看结果,如下图所示:

2.8__unescapeHtml

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

如果函数不认识某个实体,就会将实体保留下来,并一字不差地插入结果字符串中。例如,">&zzzz;x"会变为">&zzzz;x"。

1、我们先来看看这个 _unescapeHtml 长得是啥样子,路径:函数助手 > 选择_unescapeHtml,如下图所示:

2、关键参数说明:

String to unescape:待反转义字符串

3、实例

(1)使用函数助手,生成我们要调用函数的表达式,要转换 "中国" 如下图所示:

(2)建立测试计划开始调用函数,我们转换了 "中国" ,如下图所示:

(3)保存测试计划,点击运行Jmeter,查看结果,如下图所示:

3.小结

好了,今天到这里JMeter5的函数下篇就介绍和分享完了,到此函数介绍就全部结束,就要告一段落了感谢您耐心的阅读和一路支持宏哥!!!

相关推荐
Mike_jia7 分钟前
Memos:知识工作者的理想开源笔记系统
前端
前端大白话8 分钟前
前端崩溃瞬间救星!10 个 JavaScript 实战技巧大揭秘
前端·javascript
loveoobaby9 分钟前
Shadertoy着色器移植到Three.js经验总结
前端
蓝易云12 分钟前
在Linux、CentOS7中设置shell脚本开机自启动服务
前端·后端·centos
浩龙不eMo12 分钟前
前端获取环境变量方式区分(Vite)
前端·vite
土豆骑士23 分钟前
monorepo 实战练习
前端
土豆骑士25 分钟前
monorepo最佳实践
前端
一棵树长得超出它自己25 分钟前
jmeter中监控服务器ServerAgent
jmeter
见青..25 分钟前
【学习笔记】文件包含漏洞--本地远程包含、伪协议、加密编码
前端·笔记·学习·web安全·文件包含
学习OK呀41 分钟前
后端上手学习React Router基础知识
前端