jmeter java请求 参数_性能测试十二:jmeter进阶之java请求参数化

本文详细介绍了如何在JMeter中使用Java请求进行参数化,包括如何在代码中定义和注册参数,如何导出和替换jar包,以及如何在Java请求中引用和使用参数,以实现数据库操作的性能测试。
摘要由CSDN通过智能技术生成

如项目中的ip、端口号之类的,都可以在此代码中定义

a8bf80e334ab246af33ff6da238ffc16.png

public Arguments getDefaultParameters() {

// TODO Auto-generated method stub

return null;

}

此处注册两个参数到jmeter的变量池:

p_name,默认值设为abc

p_desc,默认值设为123

ae8881d47fb6b4da960f6fe79e5c4618.png

/**

* 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改

*/

@Override

public Arguments getDefaultParameters() {

Arguments arguments = new Arguments();

arguments.addArgument("p_name", "abc");

arguments.addArgument("p_desc", "123");

return arguments;

}

由于改变了代码 ,需重新导出jar包,并在jmeter目录下替换原来的jar包

b5cf06f2a974afc6778b34ecf66903ad.png

3410bce6662a7facf02ca158a5cb5510.png

重启jmeter

b7a4f8115edb42a87a4d5a1c3ca168d0.png

6304389c770738eaf5322b24af8c928c.png

这样就可以在代码里面引用到参数了

当然,只要注册了过后,做什么参数都行

687cd832c44bdaaab0b7e0cd631c3bc9.png

在代码中使用:

47a65a53cf38b47777433ca72f54b870.png

@Override

public SampleResult runTest(JavaSamplerContext arg0) {

SampleResult result = new SampleResult();

// 给事务起个名称

result.setSampleLabel("insert");

// 事务开始

result.sampleStart();

// 执行sql之前,先进行参数化

try {

String p_name = arg0.getParameter("p_name");

String p_desc = arg0.getParameter("p_desc");

statement.setString(1, p_name);

statement.setString(2, p_desc);

int rows = statement.executeUpdate();

if (rows > 0){

// 事务成功

result.setSuccessful(true);

}else{

// 事务失败

result.setSuccessful(false);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 事务结束

result.sampleEnd();

return result;

}

92e906af7541cb86cf1ae8f72f008d34.png

public static void main(String[] args) {

MyJmeterTest test = new MyJmeterTest();

// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象

JavaSamplerContext context = new JavaSamplerContext(test.getDefaultParameters());

test.setupTest(context);

test.runTest(context);

test.teardownTest(context);

}

此时需再次导出、替换、重启jmeter就可以运行了

2cf9b1d32aa8c01d0312b91ff8875f3b.png

jmeter java脚本调试最终版:

package cn.test.jmeter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

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 MyJmeterTest implements JavaSamplerClient {

// 全局变量

PreparedStatement statement;

Connection conn;

/**

* 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改

*/

@Override

public Arguments getDefaultParameters() {

Arguments arguments = new Arguments();

arguments.addArgument("p_name", "abc");

arguments.addArgument("p_desc", "123");

return arguments;

}

/**

* 初始化的操作写在setup方法里,类似于LR里的init

*/

@Override

public void setupTest(JavaSamplerContext arg0) {

// 注册驱动,告诉Java接下来要链接哪个数据库

try {

Class.forName("com.mysql.jdbc.Driver");

// 建立mysql数据库链接

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "123456");

// 把sql进行编译

statement = conn.prepareStatement("insert into itcast_role (name, description) values (?,?)");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 真正多次操作的业务,放在runtest方法里,类似于LR里的action

*/

@Override

public SampleResult runTest(JavaSamplerContext arg0) {

SampleResult result = new SampleResult();

// 给事务起个名称

result.setSampleLabel("insert");

// 事务开始

result.sampleStart();

// 执行sql之前,先进行参数化

try {

String p_name = arg0.getParameter("p_name");

String p_desc = arg0.getParameter("p_desc");

statement.setString(1, p_name);

statement.setString(2, p_desc);

int rows = statement.executeUpdate();

if (rows > 0){

// 事务成功

result.setSuccessful(true);

}else{

// 事务失败

result.setSuccessful(false);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 事务结束

result.sampleEnd();

return result;

}

/**

* 结束的操作放在teardown里,类似于LR里的end

*/

@Override

public void teardownTest(JavaSamplerContext arg0) {

// 关闭链接

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

MyJmeterTest test = new MyJmeterTest();

// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象

JavaSamplerContext context = new JavaSamplerContext(test.getDefaultParameters());

test.setupTest(context);

test.runTest(context);

test.teardownTest(context);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值