JMeter案例分享:使用JMeter内置函数生成uuid,如何控制一次迭代中仅生成一次?

18 篇文章 ¥19.90 ¥99.00

 

目录

前言

业务场景

踩坑的尝试

错误分析

解决方案


 

前言

了解JMeter内置函数的小伙伴,想必都对${__UUID}不陌生。不需要给它提供任何参数,就可以生成一个随机字符串,简直不要太简单。然而,即便是这么简单的内置函数,也让我掉坑了。

### 如何在 JMeter 中添加和使用自定义或内置函数 #### 添加和使用内置函数 JMeter 提供了一系列内置函数来满足常见的测试需求。这些函数可以直接通过 `${}` 的方式调用,并按照指定的语法格式传入必要的参数[^4]。 例如,如果需要生成一个 UUID,则可以使用 `__UUID` 函数。其基本形式如下所示: ```jmeter ${__UUID()} ``` 此表达式会在每次执行时生成一个新的 UUID。为了控制一次迭代中只生成一次 UUID,可以通过变量存储的方式实现。具体方法是在 Samplers 或 PreProcessor 中设置该值并保存到一个用户定义的变量中[^1]。 --- #### 自定义函数的开发与集成 当现有的内置函数无法满足特殊需求时,可以选择开发自定义函数。以下是实现这一目标的主要流程说明: 1. **创建 Java 类** 开发者需编写一个继承自 `org.apache.jmeter.functions.AbstractFunction` 的类,并重写其中的关键方法(如 `execute`, `setParameters`, 和 `checkParameter`)。此类应封装所需的逻辑操作[^2]。 2. **打包成 jar 文件** 将编写的自定义函数代码构建为一个独立的 `.jar` 文件以便后续加载至 JMeter 环境中[^3]。 3. **部署到 JMeter** 把生成好的 jar 文件放置于 JMeter 安装目录下的 `/lib/ext/` 路径下。重启 JMeter 后即可识别新增的功能模块。 4. **调用新函数** 使用 `${}` 结构引用已注册的新功能。假设自定义函数名为 `myCustomFunc`,则实际应用可能类似于下面这样: ```jmeter ${__myCustomFunc(param1,param2)} ``` 上述过程展示了从无到有建立个性化解决方案的能力,同时也体现了 JMeter 插件化设计所带来的灵活性优势。 --- #### 示例代码展示 以下是一个简单的自定义函数示例,用于返回固定的字符串 "Hello, Custom Function!": ```java package com.example.customfunctions; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.functions.AbstractFunction; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import java.util.Collection; import java.util.List; public class HelloFunction extends AbstractFunction { private static final List<String> desc = java.util.Collections.unmodifiableList( java.util.Arrays.asList(new String[]{"Description of parameters"})); @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws IllegalUserActionException { return "Hello, Custom Function!"; } @Override public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException { checkParameterCount(parameters, 0); } @Override public String getReferenceKey() { return "__hello"; } @Override public List<String> getArgumentDesc() { return desc; } } ``` 完成以上步骤之后,在脚本里就可以像这样调用了: ```jmeter ${__hello()} ``` 这会输出 `"Hello, Custom Function!"` 字符串作为结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值