**
Jmeter运行Java脚本 创建TXT文件
**
一、核心步骤
1.创建一个Java工程;
2.将JMeter的lib目录下的jar文件以及ext、junit文件下的jar添加进此工程的Build Path;
ApacheJMeter_core.jar(必须)、ApacheJMeter_java.jar(必须)、
avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar
3.新建一个JavaSampler工程,在此工程里添加一个com.test包和创建OutputService、 PerformenceTest两个类
PS:创建一个测试类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写:
public Arguments getDefaultParameters():设置可用参数及的默认值;
public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0):测试结束时调用;
具体代码如下:
输入参数类:
package com.test;
import java.io.File;
import java.io.PrintWriter;
/**
* Created by Administrator on 2017/4/20.
*/
public class OutputService {
public static void output(String filename,int a,int b,int c) throws Exception{
PrintWriter out=new PrintWriter(new File(filename));
out.write(a+":"+b+":"+c);
out.close();
}
}
测试类:
package com.test;
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;
/**
* Created by Administrator on 2017/4/20.
*/
public class PerformenceTest implements JavaSamplerClient {
private SampleResult results;
private String a;
private String b;
private String c;
private String filename;
public static void main(String[] args) {
// TODO Auto-generated method stub
Arguments params = new Arguments();
params.addArgument("filename","0");
params.addArgument("a", "0");//设置参数,并赋予默认值0
params.addArgument("b", "0");//设置参数,并赋予默认值0
params.addArgument("c", "0");
JavaSamplerContext arg0 = new JavaSamplerContext(params);
PerformenceTest test = new PerformenceTest();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}
// 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("filename", "0");//设置参数,并赋予默认值0
params.addArgument("a", "0");//设置参数,并赋予默认值0
params.addArgument("b", "0");//设置参数,并赋予默认值0
params.addArgument("c","0");
return params;
}
// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
public void setupTest(JavaSamplerContext arg0) {
results = new SampleResult();
}
// 测试执行的循环体,根据线程数和循环次数的不同可执行多次
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
a = arg0.getParameter("a"); // 获取在Jmeter中设置的参数值
b = arg0.getParameter("b"); // 获取在Jmeter中设置的参数值
c = arg0.getParameter("c");
filename = arg0.getParameter("filename"); // 获取在Jmeter中设置的参数值
results.sampleStart();// jmeter 开始统计响应时间标记
try {
OutputService test = new OutputService();
test.output(filename,Integer.parseInt(a), Integer.parseInt(b),Integer.parseInt(c));
results.setSuccessful(true);
// 被测对象调用
} catch (Throwable e) {
results.setSuccessful(false);
e.printStackTrace();
} finally {
results.sampleEnd();// jmeter 结束统计响应时间标记
}
return results;
}
// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
public void teardownTest(JavaSamplerContext arg0) {
}
}
参考链接:https://www.cnblogs.com/chenchen-tester/p/6739356.html
4、把该工程以jar包形式导出,选择File—Export—Java—JAR file—勾选该工程所有文件
,选择Export all output folder for checked projects—选择导出路径 最后finish
5、然后把导出的jar包复制到Jmeter的lib\ext目录下,重启Jmeter
配置Jmeter
创建线程组、Java请求、图形结果、查看结果树、聚合报告、用表格察看结果,进行测试
6、打开测试计划,添加线程组–Java请求,选择测试类,会自动加载出类中的参数
JMeter–选项–函数助手对话框 把函数字符串拷贝到下面值里
值=路径+函数字符串+文件类型
给参数赋值
提示:
${__Random(1, 3)}:随机生成1-3之间的整数
name${__Random(1, 3)}:随机生成name1, name2, name3中的任意1个字符串
KaTeX parse error: Expected group after '_' at position 2: {_̲_V(name{__Random(1, 3)})}对形如name1的字符串求值。
也就是不把name1当成字符串来看,而是把name1当作是1个变量,并获取这个变量的值。
name1的值是我们在用户自定义变量中定义过的,也就是搜索。那么连起来,
这个表达式的作用就是随机生成搜索第一个变量, 搜索第二个变量, 搜索第三个变量中的任意一个字符串
注意:
这样的Java请求值需要你在相应的盘创建一个文件夹,否则会运行失败,我这里是D盘创建了一个名为test的文件夹。
添加察看结果树,聚合报告,图形结果
查看test文件夹,里面会新建TXT文件