Jmeter执行java脚本

本文详细介绍如何在JMeter中使用BeanShell取样器动态获取并设置当前日期为请求参数,通过编写简单的Java代码实现日期的实时更新,适用于需要动态日期参数的性能测试场景。

 

1,先添加一个线程组

2,右击线程组,添加一个BeanShell 取样器

3,点击BeanShell取样器,输入JAVA代码

4、这个代码是获取当前日期,输出到属性里,并且打印到控制台,点击运行

import java.time.LocalDate;
String todayStr=LocalDate.now().toString();
vars.put("today",todayStr);
log.info("today is {}",todayStr);
### 如何在 JMeter 中导入和使用 Java 脚本 #### 方法一:通过 `Java Request` 插件直接编写 Java 类 可以利用 JMeter 的 `Java Request` 功能来运行自定义编写的 Java 测试脚本。这需要继承 `JavaSamplerClient` 并实现其接口中的方法。 以下是具体步骤: 1. 创建一个 Java 文件,该文件需继承 `org.apache.jmeter.protocol.java.sampler.JavaSamplerClient` 接口,并重写必要的方法(如 `setupTest`, `teardownTest`, 和 `runTest`)。 2. 将此 Java 文件打包为 `.jar` 文件并将其放入 JMeter 安装目录下的 `/lib/ext/` 或者 `/lib/` 目录中。 3. 启动 JMeter,在测试计划中添加一个新的 **Java Request** Sampler,选择刚刚创建的类作为目标 sampler。 示例代码如下所示: ```java import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; public class CustomJavaRequest implements JavaSamplerClient { @Override public Arguments getDefaultParameters() { Arguments arguments = new Arguments(); arguments.addArgument("paramName", "defaultValue"); return arguments; } @Override public void setupTest(JavaSamplerContext context) {} @Override public SampleResult runTest(JavaSamplerContext context) { String paramValue = context.getParameter("paramName"); SampleResult result = new SampleResult(); try { result.setSuccessful(true); result.setResponseCodeOK(); result.setResponseMessage("Custom message."); result.setDataType(SampleResult.TEXT); // Set the MIME type of your response. result.getResponseData().write(("Parameter value is: " + paramValue).getBytes()); } catch (Exception e) { result.setSuccessful(false); result.setResponseCode("500"); result.setResponseMessage(e.getMessage()); } return result; } @Override public void teardownTest(JavaSamplerContext context) {} } ``` #### 方法二:通过 Beanshell 使用外部 jar 包 另一种常见的方式是在 Beanshell 取样器或者前置处理器中加载已经存在的 Java 类库或函数。这种方式适合于那些不需要频繁修改逻辑的情况。 操作流程如下: 1. 编译好自己的 Java 项目并将生成好的 .class 文件打成 Jar 包; 2. 把这个 Jar 放置到 JMeter 主程序根路径下的 `\lib\ext\` 下面去; 3. 如果不想放到全局 CLASSPATH,则可以在 Test Plan 设置里指定额外 Classpath 条目指向本地磁盘上的特定位置; 4. 在实际使用的 Script 部分简单声明所需对象实例化语句即可调用其中的方法。 例如下面这段简单的例子展示了如何从名为 Calc.jar 的包里面获取 Adder 实现加法运算功能: ```bsh // 假设已知有这样一个静态方法存在于某个类当中 int sum = com.mycompany.math.Adder.addTwoNumbers(8,9); log.info("Sum computed via external lib:"+sum); vars.put("calculated_sum",String.valueOf(sum)); ``` 注意这里假设的是存在这样的结构体即 `com.mycompany.math.Adder` 是有效的全限定名并且具有公共可见性的成员函数 addTwoNumbers(int,int). #### 特殊情况处理——正则表达式的转义问题 当涉及到字符串匹配模式时特别需要注意特殊字符的意义冲突现象。比如当我们尝试解析 URL 参数列表或者其他形式复杂数据流的时候经常会遇到这种情况。对于像点号这样本身就代表任意单个字符含义的元字符来说如果不加以适当修饰就会引起误解从而导致预期之外的结果发生。因此每当遇见此类场景都应该记得按照标准做法增加反斜杠来进行显式说明以便让解释引擎能够正确理解我们的意图[^5]。 --- ### 总结 综上所述,无论是采用内置扩展机制还是借助第三方插件工具链都可以很好地完成这项任务需求。前者更加贴近原生框架设计理念因而具备更好的兼容性和稳定性;后者由于灵活性较高所以在某些定制化程度较高的场合下显得尤为有用。最终的选择取决于具体的业务背景以及团队技术栈偏好等因素综合考量之后再决定最为合适不过了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值