jmeter java请求 header jmeter中java请求_java

view code

jmeter java请求 header jmeter中java请求_java_02

public class JdbcInsert implements JavaSamplerClient {                    
    // 全局变量                                                               
    PreparedStatement pstmt;                                              
    Connection conn;                                                      
                                                                          
    @Override                                                             
    public Arguments getDefaultParameters() {                             
        // 主要用于把jmeter界面中的参数和java脚本关联起来                                   
        Arguments arguments = new Arguments();                            
        arguments.addArgument("uuid",UUID.randomUUID().toString());       
        arguments.addArgument("username","张三");                           
        arguments.addArgument("pwd","123");                               
        arguments.addArgument("jdbcurl","jdbc:mysql://localhost:3306/xxxx"
        return arguments;                                                 
    }                                                                     
                                                                          
    // 执行测试操作,类似于LR里的Action函数,执行N次                                        
    @Override                                                             
    public SampleResult runTest(JavaSamplerContext context) {             
        int rows = 0;                                                     
        // 框架要求可能出现问题的代码,不能抛出异常,只能自己处理,把有问题的代码放到try里面,解决方案放到catch里        
        try {                                                             
            pstmt.setString(1,context.getParameter("uuid"));              
            pstmt.setString(2, context.getParameter("username"));         
            pstmt.setString(3, context.getParameter("pwd"));              
            // 执行sql多次                                                    
            rows = pstmt.executeUpdate();                                 
        } catch (SQLException e) {                                        
            // 当出现异常时打印异常                                                 
            e.printStackTrace();                                          
        }                                                                 
        System.out.println(rows);                                         
        return null;                                                      
    }                                                                     
                                                                          
    // 初始化操作,类似于LR中的init函数,执行1次                                           
    @Override                                                             
    public void setupTest(JavaSamplerContext context) {                   
        String url =context.getParameter("jdbcurl");                      
        String username = "root";                                         
        String password = "123123";                                       
        String sql = "insert into t_user (uuid,username,pwd) values(?,?,?)
        // 注册驱动,告诉java要链接哪个数据库                                            
        try {                                                             
            Class.forName("com.mysql.jdbc.Driver");                       
            // 建立mysql数据库链接                                               
            conn = (Connection) DriverManager.getConnection(url, username,
            // 把sql进行编译                                                   
            pstmt = (PreparedStatement) conn.prepareStatement(sql);       
        } catch (Exception e) {                                           
            // TODO Auto-generated catch block                            
            e.printStackTrace();                                          
        }                                                                 
                                                                          
                                                                          
    }                                                                     
                                                                          
    // 结束操作,类似于LR里的end函数,执行1次                                             
    @Override                                                             
    public void teardownTest(JavaSamplerContext context) {                
        try {                                                             
            conn.close();                                                 
        } catch (SQLException e) {                                        
            // TODO Auto-generated catch block                            
            e.printStackTrace();                                          
        }                                                                 
    }                                                                     
                                                                          
    public static void main(String[] args) {                              
        JdbcInsert jdbcInsert = new JdbcInsert();                         
        //先创建一个参数对象Argument                                               
        Arguments arguments = jdbcInsert.getDefaultParameters();          
        //再创建一个上下文对象JavaSamplerContext,并且把Argument对象传入                    
        JavaSamplerContext context = new JavaSamplerContext(arguments);   
        jdbcInsert.setupTest(context);                                    
        jdbcInsert.runTest(context);                                      
        jdbcInsert.teardownTest(context);                                 
                                                                          
    }                                                                     
                                                                          
}

 jmeter中实现java请求思路:采用jmeter提供的框架包,创建一个类,继承类JavaSamplerClient

重写该类的以下四个方法

getDefaultParameters()

runTest(JavaSamplerContext context)

setupTest(JavaSamplerContext context)

teardownTest(JavaSamplerContext context)

重点是通过getDefaultParameters方法构造jmeter参数,将从jmeter里获取到的参数,进行参数化

代码写好调试好后,用ecipse的export runnable jar方法,导出jar包和依赖包,放到jemeter安装包的ext文件夹下面,重启jmeter,即可以实现jmeter接收参数,调用java脚本

1.找到jmeter的框架包,以下三个包就足够了,jmeter3.3找不到另外2个包

jmeter java请求 header jmeter中java请求_bc_03

在jmeter安装包里寻找以上jar包

jmeter java请求 header jmeter中java请求_bc_04

eclipse工程右键导入外部jar包

 

jmeter java请求 header jmeter中java请求_java_05

新建java类继承JavaSamplerClient

jmeter java请求 header jmeter中java请求_jar包_06

jmeter java请求 header jmeter中java请求_jar包_07

加入jdbc jar包

jmeter java请求 header jmeter中java请求_java_08

java代码按照jmeter框架,分别编写setup,teatdown,run方法

代码至少运行一次,没问题进行以下操作,从eclipse导出可执行的jar包,供jmeter调用

工程右键

jmeter java请求 header jmeter中java请求_jar包_09

jmeter java请求 header jmeter中java请求_jar包_10

jmeter java请求 header jmeter中java请求_bc_11

jmeter java请求 header jmeter中java请求_java_12

此为导出的可执行jar包和依赖包文件夹

jmeter java请求 header jmeter中java请求_bc_13

 

将这2个文件导入到以下目录,jmeter的拓展包,每个脚本有个单独的文件夹,存放依赖包

重启jmeter,新建java请求

jmeter java请求 header jmeter中java请求_bc_14

jmeter java请求 header jmeter中java请求_bc_15

点击运行后,数据库已新增一条数据,说明脚本导入成功

查看结果树看不到java请求的信息,因为底层是二进制数据,只有控制台可以看到syso打印的信息

jmeter java请求 header jmeter中java请求_bc_16

下面接着实现jmeter参数化入参

jmeter java请求 header jmeter中java请求_java_17

jmeter java请求 header jmeter中java请求_bc_18

jmeter java请求 header jmeter中java请求_bc_19

jmeter java请求 header jmeter中java请求_bc_20

 

 

jmeter java请求 header jmeter中java请求_bc_21