在使用jmeter做接口测试时,一整个jmx测试计划中,存在多个线程,多个接口的测试

但是接口可以分类,比如业务接口、查询接口、更新接口等

考虑自动化接口测试一般都是一次性的,有完整的闭环链路,一般步骤应该如下,当然还有可能会复杂点,比如涉及接口参数格式的转换、请求header的生成等:

配置测试环境 -> 造测试数据 -> 清理数据库测试数据 -> 调用接口测试 -> 数据库查询结果数据(断言) -> 清理数据库测试数据 ->还原测试环境->生成测试报告->发送测试邮件

那么,每次都要造测试数据,跑完又得删掉,是不是很麻烦

为了偷懒~hahh

我想到可以把业务接口的返回数据中一些重要的字段存储下来,当成查询接口的入参去使用,

一般业务接口的自动化接口测试用例就很完善了,

这样查询接口既可以极大的覆盖所有情况,也可以进一步验证业务接口的调用是否正确,一举两得

当然,jmeter本身是有数学函数,可以跨线程设置全局变量,只要正则取出来接口返回值配置成全局变量,理论上是可以在其他线程中调用的

但是,如果多个线程的返回都要记录,这样就会有很多全局,因此为了能够更灵活,我自己写了java方法,当做jar包使用beanshell调用

我的场景是多个业务接口,有充值、缴费、退费等接口,交易成功均会返回订单号,

然后对应我有根据订单号查询业务信息的接口,也就是说我业务接口自动化测试的接口返回的订单号当做我查询接口的入参去使用。

首先,我们需要在jmeter中引用自己的jar包

抓取接口返回,存入txt文件的beanshell代码如下:

import writeFile.*;
System.out.println("******写入文件*************");
String filePath = "D:/apache-jmeter-3.2/work_txt/order_no.txt";
String content = vars.get("orderNo_pay_gua"); //此处的变量是从sample接口返回中,正则表达式取样获取的变量名,根据实际情况修改。
AppendFile.appendFile(filePath,content);

在一整个测试执行完后,当然每次都需要清空我们的txt文件,beanshell清空代码如下

import writeFile.*;
System.out.println("******清除文件*************");
String filePath = "D:/apache-jmeter-3.2/work_txt/order_no.txt";
AppendFile.clearFile(filePath);

附上jar包源代码

import java.io.File;
import java.io.FileWriter;
import java.io.IOException; public class AppendFile {
//将content写入到指定文件fileName中
public static void appendFile(String fileName, String content) throws IOException{
FileWriter writer = null;
try { writer = new FileWriter(fileName, true);
content = content + "\n";
writer.write(content);
} catch(IOException e){
e.printStackTrace();
}finally{
if (writer != null){
writer.close();
}
}
}
//fileName中的内容清空
public static void clearFile(String fileName) throws IOException{
FileWriter writer = null;
try{ writer = new FileWriter(fileName);
writer.write("");
} catch(IOException e){
e.printStackTrace();
}finally{
if (writer != null){
writer.close();
}
}
}
}

jar包的下载地址

链接:https://pan.baidu.com/s/1mmDa1yXKHNE9phfklHL8fQ
提取码:1xe6

jmeter使用问题——将接口返回变量存储成csv文件的更多相关文章

  1. Go Web:数据存储(2)——CSV文件

    存储到CSV文件中 1.内存存储 2.CSV文件存储 3.gob序列化存储 本文接上一篇:内存存储. 关于CSV文件的说明,见csv文件格式 当数据存储到了内存中,可以在需要的时候持久化保存到磁盘文件 ...

  2. jmeter数据库查询与接口返回进行对比

    今天在群里又看到了一个小伙伴问类似的问题,[jmeter如何实现数据库查询出来的结果与接口返回的结果进行对比判断,或者数据库两字段的相加减与接口返回进行对比].其实都一样,因为你把运算放在查询那里就行 ...

  3. 【转载】jmeter将上一个接口返回值作为下一个接口的请求参数

    第一:通过JSON Extractor 插件来提取JSON响应结果 原文地址:http://blog.csdn.net/dreamtl/article/details/68957122 接口响应结果, ...

  4. 使用ffmpeg获取视频流后如何封装存储成mp4文件

    int main(int argc,char *argv[]) 02 { 03  AVFormatContext *pFormatCtx; 04  int i,videoStream; 05  AVC ...

  5. jmeter将上一个接口返回值作为下一个接口的请求参数

    在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...

  6. go语言返回变量存储地址

    package main import "fmt" func main() { e:= fmt.Println(e) fmt.Println(&e) //&e; 将 ...

  7. 从csv文件里取数据作为请求参数,和把返回数据放到一个csv文件

    本来想把登陆后的token放到数组里,下一个参数用,但是貌似不支持数组,暂时先这样用了,并不麻烦,还很方便. 1.添加线程组等必要的东东后,添加csv配置器 2.进行设置 说明:csv文件设置不能读取 ...

  8. 爬虫存储介质之CSV文件存储

    本文章来自度娘 CSV文件存储 CSV,全称为Comma-Separated Values,中文可以叫做逗号分隔值或字符分隔值,其文件以纯文本形式 存储表格数据.该文件是一个字符序列,可以由任意数目的 ...

  9. 爬虫系列:存储 CSV 文件

    上一期:爬虫系列:存储媒体文件,讲解了如果通过爬虫下载媒体文件,以及下载媒体文件相关代码讲解. 本期将讲解如果将数据保存到 CSV 文件. 逗号分隔值(Comma-Separated Values,C ...

随机推荐

  1. Windows下libevent C++封装类实现

    题记 windows平台下对于服务器高并发的网络模型选型中,使用libevent是个不错的选择. 本文的背景基于:国内博客对于libevent大多介绍linux实现,大多是c语言的实现,Windows ...

  2. REDM基础教程1-下载、编译代码

    1.下载DM REDM的更新路径目前有两个,同步更新,可使用SVN或GIT下载对应代码 https://git.oschina.net/hgy413/REDM https://github.com/h ...

  3. 剖析Qt的事件机制原理(源代码级别)

    在用Qt写Gui程序的时候,在main函数里面最后依据都是app.exec();很多书上对这句的解释是,使Qt程序进入消息循环.下面我们就到exec()函数内部,来看一下他的实现原理.Let's go ...

  4. Python socket文件上传下载

    python网络编程 程序的目录结构 socketDemo ├── client │   ├── cli.py │   └── local_dir │   └── lianxijiangjie.mp4 ...

  5. netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源

    AntMgr https://github.com/yuzd/AntMgr 基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统 特色: 用户管理 菜单管理 角色管理 权限管理 ...

  6. .NET Core 3.0之深入源码理解Kestrel的集成与应用(一)

      写在前面 ASP.NET Core 的 Web 服务器默认采用Kestrel,这是一个基于libuv(一个跨平台的基于Node.js异步I/O库)的跨平台.轻量级的Web服务器. 在开始之前,先回 ...

  7. Hadoop 学习之路(七)—— HDFS Java API

    一. 简介 想要使用HDFS API,需要导入依赖hadoop-client.如果是CDH版本的Hadoop,还需要额外指明其仓库地址: <?xml version="1.0" ...

  8. IDEA的参数配置

    配置默认JDK 2.默认Project是没有JDK的,需要手动添加,然后才会有选项 关闭Intellij IDEA自动更新 文件编码设置 改快捷键,模板,注释,自动导包,创建web项目卡顿参数修改,代 ...

  9. 大流量下的 ElasticSearch 搜索演进

    这是泥瓦匠(bysocket.com)的第27篇精华分享 ES (ElasticSearch)是分布式搜索引擎.引擎太晦涩,其实类似一个 MySQL ,一个存储.方便提供下面功能: 近实时搜索 全文检 ...

  10. 每天学点node系列-stream

    在编写代码时,我们应该有一些方法将程序像连接水管一样连接起来 -- 当我们需要获取一些数据时,可以去通过"拧"其他的部分来达到目的.这也应该是IO应有的方式. -- Doug Mc ...