这种数据驱动的本质是:将测试的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目录下创建用例文件,如下所示

  • Case - 用例名称
  • parameter- 参数值,用于生成对API的请求
  • request - 在此列中,JMeter将向API写入接口路径
  • Method - 在此列中,JMeter将写入请求方法
  • ActualResult - 实际结果是我们接口实际返回的结果。将与预期值进行比较
  • ExpectedResult 预期结果是我们期望从API获得的结果,手动写入
  • ResponseCode 响应码是我们接口返回的响应状态
  • Status Jmeter将实际值与预期值进行比较,得出断言结论

2:添加一个线程组

3:添加一个用户变量 

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

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

代码如下:

5添加一个While控制器 

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

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

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

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

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

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

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

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

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

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

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文件,分别回写用例执行结果

Jmeter(三十一)_数据驱动,业务关联的更多相关文章

  1. Jmeter(二十一)_脚本参数化与内存溢出的解决方案

    这一篇文章随便说一下JMETER的脚本参数化 1:Parameters的两种参数化方法 1.1:函数助手参数化 首先准备你的参数数据.我在bin/data中新建了一个dat文件,记事本另存为修改编码为 ...

  2. jmeter(五十一)_性能测试中的服务器资源监控与分析

    概述 性能测试过程中,对服务器资源的监控是必不可少的.这里的资源又分了两块,windows和linux   linux下监控资源 访问网址http://jmeter-plugins.org/downl ...

  3. Jmeter(四十一)_图片爬虫

    今天教大家用元件组合,做一个网页图片爬虫. 需要用到的元件:循环控制器+计数器+xpath提前器+函数嵌套+beanshell代码 首先我们确定一下要爬取的图片网站:https://dp.pconli ...

  4. Jmeter(三十一) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy4(详解教程)

    1.简介 上一篇文章中宏哥给小伙伴或童鞋们介绍讲解了手动添加Variable list的值,而实际工作中Badboy为我们提供了Variable setter工具,让我们不再使用哪一种比较笨拙的方法了 ...

  5. Jmeter(二十一)_完整Demo

    1:创建一个线程组   2:添加一个cookie管理器     3:设置你的信息头管理器:application/json;text/plain;charset=UTF-8   44 4:添加一个用户 ...

  6. jmeter 单接口测试方案(接口无业务关联)

    前言 前面开了一篇讲了Jenkins+jmeter+ant的使用,但没有说到具体怎么投入到项目使用,主要介绍了接口测试定义,流程和环境部署,所以我今天要说的就是我是怎么将这个方案投入到实际中使用的.这 ...

  7. Jmeter(三十)_TimeShift函数在JSR223中的使用

    今天学习一下TimeShift函数在JSR223中的使用方法. 关联之前的一篇时间戳文章:Jmeter(十二)_打印时间戳 首先,创建线程组,在线程组下面创建一个JSR223采样器 选择Groovy语 ...

  8. FreeSql (三十一)分区分表

    分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中.把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,数据库不同实现方式有所不同. 与分表不同,一张大表进行 ...

  9. Bootstrap <基础三十一>插件概览

    在前面布局组件中所讨论到的组件仅仅是个开始.Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以给站点添加更多的互动.即使不是一名高级的 JavaScript 开发人员,也可以着手 ...

随机推荐

  1. 小技巧-mac修改finder菜单栏

    效果: 方法: 添加:打开finder后,长按command,可以将其他app拖到菜单栏. 删除:同理,长按command,将不需要的图标拖出菜单栏即可. PS:强烈推荐gotoshell这个小工具, ...

  2. 洗礼灵魂,修炼python(55)--爬虫篇—知识补充—RFC 2616 http状态码

    不多说直接上状态码表: 状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽 ...

  3. <转>通过反射获取Form/MenuStrip/ContextMenuStrip等列表

    private void button1_Click(object sender, EventArgs e) { treeView1.Nodes.Clear(); Assembly a = Assem ...

  4. oracle order by 排序

    Syntax ORDER BY { column-Name | ColumnPosition | Expression } [ ASC | DESC ] [ NULLS FIRST | NULLS L ...

  5. ssh登陆慢的问题

    识别主机名时卡一下,关掉DNS选项: root@ns-virtual-machine:~# grep -i dns /etc/ssh/sshd_config UseDNS no 如果还有问题,打开ve ...

  6. docker修改容器gogs时区时间

    问题描述: 公司内部搭建了一个gogs-git,是用docker部署的,但是发现提交的代码什么的时间跟服务器时间不一致 提交上去的世界是UTC时间不是中国的时间CST,相当于慢了8个小时 1.dock ...

  7. .NetCore Build Terminology

       .NETCore Command:    1.dotnet build 2.dotnet run 3.dotnet new classlib 4.dotnet new xunit 5.dotne ...

  8. 12LaTeX学习系列之---LaTex的图片插入

    目录 目录 前言 (一)插图的基本语法 (二)插入的基本设置 1.说明: 2.源代码: 3.输出效果 (三)查看文档 目录 本系列是有关LaTeX的学习系列,共计19篇,本章节是第12篇. 前一篇:1 ...

  9. 团队Alpha博客链接目录

    Dipper团队Alpha博客链接目录 团队Alpha冲刺博客 第一次冲刺 第二次冲刺 第三次冲刺 第四次冲刺 第五次冲刺 第六次冲刺 第七次冲刺 第八次冲刺 第九次冲刺 第十次冲刺 第十一次冲刺 第 ...

  10. python五十六课——正则表达式(常用函数之compile())

    2).compile(regex,[flags=0]):返回一个Pattern对象(认为:它内部已经封装了一套regex和flags) 可以再通过Pattern对象继续调用match函数(此时只需要传 ...