如项目中的ip、端口号之类的,都可以在此代码中定义
public Arguments getDefaultParameters() {// TODO Auto-generated method stubreturn null;}
此处注册两个参数到jmeter的变量池:
p_name,默认值设为abc
p_desc,默认值设为123
/*** 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改*/@Overridepublic Arguments getDefaultParameters() {Arguments arguments = new Arguments();arguments.addArgument("p_name", "abc");arguments.addArgument("p_desc", "123");
return arguments;}
由于改变了代码 ,需重新导出jar包,并在jmeter目录下替换原来的jar包
重启jmeter
这样就可以在代码里面引用到参数了
当然,只要注册了过后,做什么参数都行
在代码中使用:
@Overridepublic 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 blocke.printStackTrace();}// 事务结束result.sampleEnd();return result;}
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就可以运行了
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请求面板里展示或更改*/@Overridepublic Arguments getDefaultParameters() {Arguments arguments = new Arguments();arguments.addArgument("p_name", "abc");arguments.addArgument("p_desc", "123");
return arguments;}
/*** 初始化的操作写在setup方法里,类似于LR里的init*/@Overridepublic 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 blocke.printStackTrace();}}/*** 真正多次操作的业务,放在runtest方法里,类似于LR里的action*/@Overridepublic 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 blocke.printStackTrace();}// 事务结束result.sampleEnd();return result;}
/*** 结束的操作放在teardown里,类似于LR里的end*/@Overridepublic void teardownTest(JavaSamplerContext arg0) {// 关闭链接try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.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);}
}
转载于:https://www.cnblogs.com/malinalian/p/10582989.html
相关资源:《jmeter:菜鸟入门到进阶系列》