jmeter java 关联_Jmeter(三十一)_数据驱动,业务关联

http抓包之接口自动化测试肖佳著

46.9元

(需用券)

去购买 >

88570cae15e2eafccaa4d787ca899455.png

这种数据驱动的本质是:将测试的case,参数,url,预期结果,存储于本地excel中。运行脚本时,从文件中获取预期结果,将实际结果与预期结果比较,将实际结果,比较结果,响应状态码回写excel。

一:主干业务处理

1:需要的jar包

Apache POI 3.17

Apache POI-OOXML 3.17

Apache Commons IO 2.6

OOXML模式1.3

commons-collections4-4.1

xmlbeans-2.6.0

2:将这些jar包放到jmeter的lib目录下,记得要在jmeter关闭的情况下放置!然后重启jmeter 。

添加jar包后,在本地jmeter目录下创建用例文件,如下所示

e734733b92b3541ba2e52a58e61da2d0.png

Case - 用例名称

parameter- 参数值,用于生成对API的请求

request - 在此列中,JMeter将向API写入接口路径

Method - 在此列中,JMeter将写入请求方法

ActualResult - 实际结果是我们接口实际返回的结果。将与预期值进行比较

ExpectedResult 预期结果是我们期望从API获得的结果,手动写入

ResponseCode 响应码是我们接口返回的响应状态

Status Jmeter将实际值与预期值进行比较,得出断言结论

2:添加一个线程组

3:添加一个用户变量

在测试计划中创建一个名为“pathToFile”的变量”。这个变量的值是我们上面创建的Excel文件的路径(注意双反斜杠)

2e437610201cc076a2569a6420a44592.png

4. 添加一个JSR223采样器,目的是根据excel文件创建一个Workbook对象

4509f1bc167265a88cdb77f06821585d.png

代码如下:

46957f8b3d01dee44d09c22640624b53.png

importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFRow;import java.io.*;

XSSFWorkbook book="";try{

InputStream inputStream= new FileInputStream(new File("${pathToFile}"));

book= newXSSFWorkbook(inputStream);

inputStream.close();

}catch(Exception e){

log.info("!!!!!!!!"+ e.getMessage()+"!!!!!!!!!!!!!!!");

}if(!book.equals("")){

vars.putObject("book",book);

}else{

SampleResult.setStopTestNow(true);

}

5:添加一个While控制器

While控制器用于Excel文件包含输入数据的行数,作为发送请求的次数

5d87cd719cd69004f4d43d6497e9cc7b.png

在While Controller中,添加以下代码,用于停止While Controller

${__javaScript("${stopWhile}"!="OK")}

6:While控制器下添加一个计数器,用于循环计数

eb2d3824e2a401e5228bda404cdc77de.png

7:While控制器下添加一个JSR223采样器

这一步我们从excel中获取字符串,并将这些值存储在变量中

6229094312060eb7ab73bf4f148b07c5.png

importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFRow;import java.io.*;int i = Integer.parseInt(vars.get("counter"));

XSSFRow row= vars.getObject("book").getSheetAt(0).getRow(i);

vars.putObject("row",row);for (int j = 1; j <= vars.getObject("book").getSheetAt(0).getRow(0).getLastCellNum(); j++) {if (row.getCell(j) == null) {

row.createCell(j).setCellValue("");

}

}

String parameter= row.getCell(1).toString();

vars.put("parameter",parameter);

String request= row.getCell(2).toString();

vars.put("request",request);

String Method= row.getCell(3).toString();

vars.put("Method",Method);

String expectedResult= row.getCell(5).toString();

vars.put("expectedResult",expectedResult);

String Case= row.getCell(0).toString();

vars.put("Case",Case);

8:While控制器添加一个if控制器 ,用于判断excel中的方法,决定接口分支

e2ff7b4dd204d08e70afcbebfeffb264.png

9:IF控制器下添加http请求 ,该请求在控制器下循环读取用例(接口路径和参数)

f580e71247d74ac7161676f8bd8f3d58.png

10:http请求下循环提取响应信息 ,用于和预期值进行比较

161589e8c4682503948decc6fde01f29.png

11:http请求下添加一个BeanShell断言 ,用于比较实际结果和预期结果,并在Excel中记录响应实际值,响应状态和用例通过状态

121f6318f8612635e8f8cb215dc1a9b3.png

importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importjava.io.IOException;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFRow;//String responseToApi = SampleResult.getUrlAsString();

String requestCode =SampleResult.getResponseCode();

String responseFromApi= ("${responseMessage}");

String status= null;if (vars.get("expectedResult").equals(responseFromApi)) {

status= "Passed";

}else{

status= "Failed";

}//vars.getObject("row").createCell(3).setCellValue(responseToApi);

vars.getObject("row").createCell(4).setCellValue(responseFromApi);

vars.getObject("row").createCell(7).setCellValue(status);

vars.getObject("row").createCell(6).setCellValue(ResponseCode);//vars.getObject("row").createCell(0).setCellValue("${__samplerName()}");

String stopWhile= null;int i = Integer.parseInt(vars.get("counter"));if (i >= vars.getObject("book").getSheetAt(0).getLastRowNum()) {

stopWhile= "OK";

vars.put("stopWhile",stopWhile);

}

12:添加JSR223采样器 ,用于回写运行结果到excel中

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFRow;

import java.io.*;

try {

FileOutputStream out = new FileOutputStream(new File("${pathToFile}"));

vars.getObject("book").write(out);

vars.getObject("book").close();

} catch (Exception e) {

log.info("!!!!!!!!" + e.getMessage() + "!!!!!!!!!!!!!!!");

}

cfec420eb9eed1e69d2f57e8c0652e75.png

importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFRow;import java.io.*;try{

FileOutputStream out= new FileOutputStream(new File("${pathToFile}"));

vars.getObject("book").write(out);

vars.getObject("book").close();

}catch(Exception e) {

log.info("!!!!!!!!" + e.getMessage() + "!!!!!!!!!!!!!!!");

}

注:

1:以上所有主干业务写入excel中的sheet1!

66b859c1e57937d49e6382b139e41882.png

2:从主干业务中返回主数据id和session,并保存为全局变量供支线业务调用

2e423e570f5243059e0eedcccd819da2.png

二:分支业务处理

1:在excel中创建新的sheet,作为分支流程的数据

320d4c8c138e05fa1873ce253559570b.png

2:创建一个新的线程组,写入分支业务流,修改sheet值

8978d364754f3d723d6ec35c15858768.png

df7970042a43c3624d87e94b66d5926d.png

3:sampler中调用全局变量的主数据id,与主业务流进行关联

f4b86fc6019911f87e7b3e1e5b87cbd6.png

以上配置完成之后,执行脚本。数据会写入两个sheet文件,分别回写用例执行结果

原文链接:https://www.cnblogs.com/Zfc-Cjk/p/9116691.html

java 11官方入门(第8版)教材

79.84元

包邮

(需用券)

去购买 >

f0f3f55624fb396b1764d42d6df88864.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值