zoukankan      html  css  js  c++  java
  • 性能测试十二:jmeter进阶之java请求参数化

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

    public Arguments getDefaultParameters() {
    // TODO Auto-generated method stub
    return null;
    }

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

    p_name,默认值设为abc

    p_desc,默认值设为123

    /**
    * 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改
    */
    @Override
    public Arguments getDefaultParameters() {
    Arguments arguments = new Arguments();
    arguments.addArgument("p_name", "abc");
    arguments.addArgument("p_desc", "123");

    return arguments;
    }

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

     

     重启jmeter

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

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

     

    在代码中使用:

    @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;
    }

     

    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请求面板里展示或更改
    */
    @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);
    }

    }

  • 相关阅读:
    C#listbox使用方法
    poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 黑白无常
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/10193277.html
Copyright © 2011-2022 走看看