
最近最项目参数化的时候用到,场景是这样的,需要测试A和B两个接口,其中B接口传入的参数必须是传递给A接口过的,所以整理一个思路就是:
1. 正常调用A接口,但是将传递给A接口的参数保存到文本里,此处要注意避免写入操作影响测试、成为瓶颈;
2. 调用B接口时,参数从上一步的文本里读取数据
收藏一下备忘:
1. 用于将A接口传入的参数保存下来的代码
// 保存pin和UUID,每个线程一份
StringBuffer uuidStr = new StringBuffer();
//在测试结束的时候 写入文件
public void teardownTest(JavaSamplerContext context) {
write2Txt("/export/uuid.txt", uuidStr.toString());
} public SampleResult runTest(JavaSamplerContext arg0) {
// TODO Auto-generated method stub
SampleResult result = new SampleResult();
boolean isSuccessful = false;
try {
//************************* 构造参数开始******************************************
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//************************* 构造参数结束******************************************
result.sampleStart();
// 调用业务方法
object = a.xxxxxxxx(args);
if (object.isSuccess()) {
isSuccessful = true;
} else {
isSuccessful = false;
}
// 释放资源
xxxxxxxxxxxxxx
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.info(e.getMessage());
} finally {
result.sampleEnd();
result.setSuccessful(isSuccessful);
uuidStr.append(pinBuffer).append(",").append(Uuid);
}
return result;
} /*
* file 文件名 content 文件内容
*/
public void write2Txt(String file, String conent) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
out.write(conent + "\r\n");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. B接口 使用CSV Data set config 读取数据
相关代码:
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
args.addArgument("pin", "111");
args.addArgument("uuid", "aaa"); return args;
} public SampleResult runTest(JavaSamplerContext arg0) {
// 获取从文本读取的参数值
String pin = arg0.getParameter("pin");
String uuid = arg0.getParameter("uuid");
//其余代码略...
}