最近最项目参数化的时候用到,场景是这样的,需要测试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"); //其余代码略... }