ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据驱动中的业务逻辑关联

2019-11-20 16:01:50  阅读:266  来源: 互联网

标签:逻辑 vars org poi 关联 import apache 驱动 usermodel


概述

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

一:主干业务处理

1:需要的jar包

Apache POI 3.17 

Apache POI-OOXML 3.17 

Apache Commons IO 2.6 

OOXML1.3 

commons-collections4-4.1 

xmlbeans-2.6.0 

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

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

  • Case - 用例名称

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

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

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

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

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

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

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

2:添加一个线程组

3:添加一个用户变量 

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

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

 

 

代码如下:

 

 

import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import java.io.*; 
XSSFWorkbook book ="";
try{
    
InputStream inputStream = new FileInputStream(new File("${pathToFile}"));
book = new XSSFWorkbook(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文件包含输入数据的行数,作为发送请求的次数 

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

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

 

 

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

 

 

7While控制器添加一个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.*;

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中的方法,决定接口分支

 

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

 

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

 

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

 

 

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.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() + "!!!!!!!!!!!!!!!");
}

 

 

注:

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

 

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

 

 

二:分支业务处理

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

 

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

 

 

 

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

 

 

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

标签:逻辑,vars,org,poi,关联,import,apache,驱动,usermodel
来源: https://www.cnblogs.com/wsy0202/p/11898343.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有