jmeter中实现java请求实战日志

view code
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安装包里寻找以上jar包
eclipse工程右键导入外部jar包
 

新建java类继承JavaSamplerClient

加入jdbc jar包
java代码按照jmeter框架,分别编写setup,teatdown,run方法
代码至少运行一次,没问题进行以下操作,从eclipse导出可执行的jar包,供jmeter调用
工程右键

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

 

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

点击运行后,数据库已新增一条数据,说明脚本导入成功
查看结果树看不到java请求的信息,因为底层是二进制数据,只有控制台可以看到syso打印的信息
下面接着实现jmeter参数化入参

 

 

转载于:https://www.cnblogs.com/monici/p/9430754.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值