如何将Jar包内变量/客户端值传入JMeter请求并获取响应?
解决方案
需求一:带批处理文件的Jar包变量传入JMeter请求并获取响应
步骤1:执行批处理并捕获Jar包输出
用JMeter的OS Process Sampler,配置批处理文件路径,在Command字段传入所需参数(如果批处理支持变量传递)。勾选Capture Output,Jar包执行后的输出会被Sampler捕获。步骤2:提取Jar包输出中的变量值
给OS Process Sampler添加Regular Expression Extractor子节点,根据Jar包输出格式写正则表达式,把需要的变量值提取出来,存到JMeter变量(比如jar_var)。步骤3:在JMeter请求中引用变量
后续HTTP请求或其他Sampler的参数、请求体里,用${jar_var}的形式引用提取到的变量,发送请求后就能在响应结果里看到对应返回。
需求二:客户端-服务器Java Jar包集成到JMeter,传递值并显示响应
步骤1:将Jar包加入JMeter类路径
把Jar包放到JMeter的lib目录,或者在测试计划的Add Directory or Jar to Classpath里指定Jar包路径,重启JMeter让类加载生效。步骤2:用JSR223 Sampler调用客户端类
添加JSR223 Sampler,选groovy作为脚本语言(性能更优)。脚本里导入Jar包的客户端类,实例化后调用发消息的方法,获取服务器响应。示例代码:import com.yourpackage.Client; Client client = new Client(); String serverResp = client.sendRequest("待传递的内容"); // 把响应存为JMeter变量 vars.put("server_response", serverResp); // 让响应直接显示在Sampler结果里 SampleResult.setResponseData(serverResp, "UTF-8");步骤3:将Jar中的值传入JMeter请求体
如果要把Jar里生成的值放到请求体,在JSR223脚本里把值存到变量,之后在HTTP请求的请求体用${变量名}引用即可。
内容的提问来源于stack exchange,提问作者kishore
相关产品推荐
相关产品推荐

