Jmeter中各种函数

${__functionName(var1,var2,var3)}

无参数时,可以直接写成${__functionName}

Tips:

  • 如果参数包含逗号,那么一定要使用 \ 来转义,否则 JMeter 会把它当作一个参数分隔符;
  • 实际使用时,一般通过函数助手对话框来生成函数字符串,不容易出错。

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

函数类型 函数名称 函数作用 启用版本
获取信息函数

__TestPlanName 返回当前测试计划的名称  ${__TestPlanName}
__threadGroupName 返回当前线程组的名称 4.1
__threadNum 返回当前正在执行的线程的编号 1.X
__samplerName 返回当前请求的名称 2.5
__log 输出日志信息 2.2  输出函数的输入字符串
__time 以多种格式返回当前时间 2.2 

${__log(Message)}:写入日志文件,形如 "...thread Name : Message"。

${__log(Message,OUT)}:写到控制台窗口。

${__log(${VAR},,,VAR=)}:写入日志文件,形如"...thread Name VAR=value"。

YMD = yyyyMMdd。
HMS = HHmmss。
YMDHMS = yyyyMMdd-HHmmss。
USER1 = JMeter属性time.USER1。
USER2 = JMeter属性time.USER2。
用户可以通过修改JMeter属性来改变默认格式,例如,time.YMD=yyMMdd

${__time()} 返回'1548133155689'

${__time(YMD,)} 返回'20190128'

${__time(dd/MM/yyyy,)} 返回'22/01/2019'

数据输入函数

__StringFromFile 从文本文件中读取字符串,用于从文本文件中读取字符串,每次读取一行,支持读取多个文件。每次调用读取一行 1.9

文件名 文件名的路径 (路径可以相对于 JMeter 启动目录)。
如果使用序列号,路径名称应该适合传递到 DecimalFormat。 是
变量名 用于后续调用该函数的变量名称 否
启动序号 初始序列号(如果省略,则将结束序列号视为循环计数) 否
末端序号 最终序列号(如果省略,序列号可以无限制地增加) 否

读取单个文件:
${_StringFromFile(demo.txt,,,)} 读取demo.txt

读取多个文件,需要在文件名中使用序列号:
${_StringFromFile(PIN.DAT,,,2)} 读取 PIN.DAT 两次
${_StringFromFile(PIN#'.'DAT,,1,3)} 读取 PIN1.DAT PIN2.DAT PIN3.DAT
${_StringFromFile(pin000'.'dat,,6,8)} 读取 pin006.dat pin007.dat pin008.dat

使用序列号时,路径名被用作 java.text.DecimalFormat 的格式字符串。当前序列号作为唯一参数传入。如果未指定开始序列号,则按原样使用路径名称。

__FileToString 把文件读取成一个字符串,每次调用都是读取整个文件 2.4
__CSVRead 返回当前正在执行的线程的编号 1.9
__XPath 使用 XPath 语法匹配 XML文件 2.0
数据计算函数

__counter 计数器函数 1.9
__intSum 对多个整数求和 1.8.1
__longSum 长整型求和 2.3.2
__Random 返回指定最大值和最小值之间的随机整数 1.9
__RandomDate 返回给定开始日期和结束日期值之间的随机日期 3.3
_RandomString 根据给定的字符生成指定长度的随机字符串 2.6
__UUID 通用唯一标识符函数 2.9
属性信息函数

__isPropDefined 判断属性是否存在 4.0
__property 对多个整数求和 1.8.1
__P 简化的属性函数,用于与命令行上定义的属性一起使用 2.0
__setProperty 简化的属性函数,用于与命令行上定义的属性一起使用 2.0
字符串操作函数 __split 根据分隔符拆分字符串为多个变量 2.0.2
__changeCase 转换大小写 4.0
__regexFunction 使用正则表达式解析之前的响应结果 1.X
脚本函数

__BeanShell 执行 beanshell 脚本 1.X
__javaScript 执行 js 脚本 1.9

${__property(user.dir)} 返回 user.dir 的值。
${__property(user.dir,UDIR)} 返回 user.dir 的值,并保存在变量 UDIR 中。

${__property(abcd,ABCD,atod)} 返回属性 abcd 的值,如果该属性未定义则返回 atod,并保存在变量 ABCD 中。
${__property(abcd,,atod)} 返回属性 abcd 的值,如果该属性未定义则返回 atod,不保存结果值。
定义字符串: VAR="a||c|" 调用 split 函数: ${__split(${VAR},VAR,|)} 返回 "a||c|",并生成如下变量: VAR_n=4 VAR_1=a VAR_2=? VAR_3=c VAR_4=? VAR_5=null

UPPER--转换成大写字母:
${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
返回 AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL

LOWER--转换成小写字母:
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
返回 labor omnia vincit improbus

CAPITALIZE--单词首字母大写:
${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}
返回 Omnibus viis romam pervenitur

转载于:https://www.cnblogs.com/zhouzz2019/p/11201304.html

<think>首先,用户的问题是:“我想了解在jMeter中如何使用Groovy函数 请问jMeter Groovy函数使用方法”。这很明确:用户想知道如何在JMeter中使用Groovy函数。 系统级指令包括: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考站内引用: - 引用[1]:关于JMeter Groovy函数的用法,如${__groovy(...)}。 - 引用[2]:解释__groovy函数执行Groovy脚本。 - 引用[3]:JMeter属性函数的使用。 - 引用[4]:Groovy脚本处理时间示例。 我需要基于这些引用构建回答。用户的问题是针对Groovy函数JMeter中的使用,所以我应该重点解释__groovy函数。 结构化回答: 1. **介绍Groovy函数JMeter中的作用**:解释为什么使用Groovy,比如进行复杂逻辑操作、生成动态数据等。 2. **基本语法**:展示__groovy函数的基本格式。 3. **示例**:提供一些常见示例,如生成动态字符串、处理日期等。 4. **高级用法**:讨论如何在脚本中使用变量、导入库等。 5. **注意事项**:提到性能考虑、错误处理等。 6. **生成相关问题**:在回答末尾添加相关问题。 确保使用中文回答。 从引用中提取关键点: - __groovy函数用于执行Groovy脚本并返回结果。 - 示例:${__groovy('Hello ' + vars.get('username'),)} 生成动态字符串。 - 另一个示例:${__groovy(import java.time.LocalDate; return LocalDate.now().plusDays(1),)} 计算明天日期。 - Groovy脚本可以用于复杂逻辑操作。 我的回答应该包括: - 步骤1:解释Groovy函数。 - 步骤2:展示基本语法。 - 步骤3:提供示例代码。 - 步骤4:讨论使用场景和最佳实践。 - 步骤5:添加引用标识。 - 最后:生成相关问题。 数学表达式:用户的问题是关于JMeter的,可能不涉及数学公式。但如果需要,我可以避免或只在必要时使用。系统指令说“所有行内数学表达式必须使用$...$格式”,但在这个上下文中,可能不相关。我会确保如果有任何数学元素,正确格式化。 回答结构: - 开头:简要介绍。 - 主体:分步骤解释。 - 结尾:总结并生成相关问题。 生成相关问题: - 基于主题,如Groovy函数的优化、常见问题、与其他函数比较等。 最终输出: - 回答用户问题。 - 末尾添加“相关问题”部分。</think>### JMeter中Groovy函数的使用方法 在JMeter中,Groovy函数(通过`__groovy`函数实现)是一种强大的工具,用于执行Groovy脚本语言,以处理复杂逻辑、生成动态数据或增强测试脚本的灵活性。Groovy是一种基于Java的脚本语言,语法简洁且功能丰富,特别适合在性能测试中进行动态计算、数据解析或条件控制。下面我将逐步解释其使用方法,确保回答清晰可靠。参考JMeter官方文档和常见实践[^1][^2]。 #### 步骤1: Groovy函数的基本语法和用途 - **基本格式**:Groovy函数JMeter中通过`${__groovy(script,)}`调用,其中: - `script` 是Groovy脚本代码。 - 函数执行脚本后返回结果,并可直接用于JMeter元素(如变量、断言或请求参数)。 - **核心用途**: - 生成动态数据(如随机字符串、日期计算)。 - 执行复杂逻辑(如条件分支、循环)。 - 访问JMeter内置对象(如变量、属性)。 - 与外部库集成(如Java类)。 例如,引用[1]提到:Groovy可用于在测试中执行复杂操作,如动态拼接字符串或日期处理[^1]。 #### 步骤2: 如何调用Groovy函数JMeter的测试计划中,Groovy函数可通过以下方式使用: - **在函数助手(Function Helper)中生成**:打开JMeter的“选项”>“函数助手对话框”,选择`__groovy`函数,输入脚本后点击“生成”,复制生成的函数字符串。 - **直接嵌入元素**:在HTTP请求、变量定义或后置处理器中,直接输入`${__groovy(...)}`格式。 - **脚本编写要点**: - Groovy脚本支持多行代码,但需确保返回一个值(使用`return`语句)。 - 可以导入Java包(如`import java.time.*`)。 - 使用JMeter变量时,通过`vars.get('varName')`获取值,`vars.put('varName', value)`设置值。 #### 步骤3: 常见示例和代码演示 以下是基于引用[1][^1]和[4][^4]的实际示例,展示Groovy函数在不同场景的应用。所有示例均使用`__groovy`函数格式。 - **示例1: 生成动态字符串** 拼接变量值生成问候语。假设JMeter中有一个变量`username`(如从CSV文件读取)。 ```groovy ${__groovy('Hello ' + vars.get('username'),)} ``` 执行后,如果`username`的值为"John",函数返回"Hello John",可直接用于HTTP请求参数。 - **示例2: 计算日期** 处理日期逻辑,如计算明天的日期。使用Java的`LocalDate`类。 ```groovy ${__groovy(import java.time.LocalDate; return LocalDate.now().plusDays(1),)} ``` 这返回字符串格式的日期(如"2023-10-01"),适用于时间戳测试数据[^4]。 - **示例3: 复杂逻辑操作** 结合条件语句检查变量值。例如,如果变量`count`大于10,则返回"high",否则返回"low"。 ```groovy ${__groovy( def count = vars.get('count') as Integer; if (count > 10) { return "high"; } else { return "low"; } ,)} ``` 此脚本演示了Groovy的灵活性,可用于动态断言或分支控制。 - **示例4: 使用外部变量和属性** 引用JMeter属性(如`user.dir`),并存储结果到新变量。 ```groovy ${__groovy(return properties.get('user.dir') + "/data", newVar)} ``` 这里,`newVar`是存储结果的变量名,后续可通过`${newVar}`引用[^3]。 #### 步骤4: 注意事项和最佳实践 - **性能优化**:Groovy脚本执行可能影响测试性能,尤其在迭代中。建议: - 避免在循环内使用复杂脚本;优先使用JMeter内置函数(如`__time`)处理简单任务。 - 测试前验证脚本:在“查看结果树”中调试输出。 - **错误处理**:Groovy脚本错误可能导致测试失败。使用try-catch块增强鲁棒性: ```groovy ${__groovy( try { return someOperation(); } catch (Exception e) { return "error"; } ,)} ``` - **兼容性**:确保JMeter版本支持Groovy(JMeter 5.0+内置Groovy引擎)。引用[2]强调,Groovy函数优于其他脚本函数(如BeanShell),因为Groovy性能更好且语法更现代[^2]。 - **常见陷阱**: - 变量作用域:脚本内修改的变量需通过`vars.put()`显式设置。 - 语法错误:Groovy是Java兼容语言,但需注意字符串引号(使用单引号或双引号一致)。 #### 总结 Groovy函数JMeter中提供高效的方式处理动态数据和复杂逻辑,通过`${__groovy(script,)}`格式调用。它适用于生成测试数据、条件验证或集成外部库,但需注意性能影响。实践中,先在函数助手测试脚本,再嵌入测试计划[^1][^2]。如果您有具体场景(如API测试),我可以进一步细化示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值