jmeter使用问题——将接口返回变量存储成csv文件
在使用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文件的更多相关文章
- Go Web:数据存储(2)——CSV文件
存储到CSV文件中 1.内存存储 2.CSV文件存储 3.gob序列化存储 本文接上一篇:内存存储. 关于CSV文件的说明,见csv文件格式 当数据存储到了内存中,可以在需要的时候持久化保存到磁盘文件 ...
- jmeter数据库查询与接口返回进行对比
今天在群里又看到了一个小伙伴问类似的问题,[jmeter如何实现数据库查询出来的结果与接口返回的结果进行对比判断,或者数据库两字段的相加减与接口返回进行对比].其实都一样,因为你把运算放在查询那里就行 ...
- 【转载】jmeter将上一个接口返回值作为下一个接口的请求参数
第一:通过JSON Extractor 插件来提取JSON响应结果 原文地址:http://blog.csdn.net/dreamtl/article/details/68957122 接口响应结果, ...
- 使用ffmpeg获取视频流后如何封装存储成mp4文件
int main(int argc,char *argv[]) 02 { 03 AVFormatContext *pFormatCtx; 04 int i,videoStream; 05 AVC ...
- jmeter将上一个接口返回值作为下一个接口的请求参数
在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...
- go语言返回变量存储地址
package main import "fmt" func main() { e:= fmt.Println(e) fmt.Println(&e) //&e; 将 ...
- 从csv文件里取数据作为请求参数,和把返回数据放到一个csv文件
本来想把登陆后的token放到数组里,下一个参数用,但是貌似不支持数组,暂时先这样用了,并不麻烦,还很方便. 1.添加线程组等必要的东东后,添加csv配置器 2.进行设置 说明:csv文件设置不能读取 ...
- 爬虫存储介质之CSV文件存储
本文章来自度娘 CSV文件存储 CSV,全称为Comma-Separated Values,中文可以叫做逗号分隔值或字符分隔值,其文件以纯文本形式 存储表格数据.该文件是一个字符序列,可以由任意数目的 ...
- 爬虫系列:存储 CSV 文件
上一期:爬虫系列:存储媒体文件,讲解了如果通过爬虫下载媒体文件,以及下载媒体文件相关代码讲解. 本期将讲解如果将数据保存到 CSV 文件. 逗号分隔值(Comma-Separated Values,C ...
随机推荐
- Delphi Thread.Queue与Synchronize的区别(差别: Synchronize是阻塞,Queue是非阻塞)
前话: 其实大家要学会看源码, 我接下来要说的这些东东,与其等别人讲,还不如自己搞几个代码试一下,印象还深刻点 TThread.Queue和TThread.Synchronize的区别, 效果上:二 ...
- 支付宝RSA签名之Delphi实现
Delphi有个很大的问题就是,厂商的不作为(没有封装标准的Cipher类库),让大家自己造轮子. 今天的轮子就是RSA签名,由于Delphi没有封装Cipher类库,所以只的自己写了. 因为要在Fi ...
- 用C实现OOP面向对象编程(1)
如摘要所说,C语言不支持OOP(面向对象的编程).并这不意味着我们就不能对C进行面向对象的开发,只是过程要复杂许多.原来以C++的许多工作,在C语言中需我们手动去完成. 博主将与大家一起研究一下如下用 ...
- Oracle expdp/impdp 使用示例
1. 创建目录 使用数据泵之前,需要创建一个存放文件的目录. 这个目录要写入Oracle的数据字典中才能识别. (1)先查看一下已经存在的目录: SQL> col owner format a5 ...
- vmware linux虚拟机忘记密码怎么办
你又忘了root密码??? 针对好多好多同学经常忘记root密码...这里给你整理怎么重置root密码!! 重启 Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面 在 lin ...
- DNS查询命令
dig(domain information groper)是一个在类Unix命令行模式下查询DNS,包括NS记录,A记录,MX记录等相关信息的工具 一.简单介绍使用dig命令查询DNS的方法 dig ...
- Markdown教程<3> 数学公式(1)
# Markdown教程<3> 数学公式(1) 1.如何在markdown中使用公式 公式分为行内公式与行间公式,其中: 行内公式使用$ 数学公式 $ 行间公式使用$$ 数学公式 $$ 2 ...
- 浅谈AI视频技术超分辨率
泛娱乐应用成为主流,社交与互动性强是共性,而具备这些特性的产品往往都集中在直播.短视频.图片分享社区等社交化娱乐产品,而在这些产品背后的黑科技持续成为关注重点,网易云信在网易MCtalk 泛娱乐创新峰 ...
- Hive的一些学习内容
Hive相关 什么是metastore? metadata是元数据,包含数据库.表.字段.分区等信息.作用:客户端连接MetaStore服务,metastore再去连接MySQL数据库存储元数据,有了 ...
- Angular2国际化
使用angular-cli初始化项目: ng new my-project 使用npm安装ngx-translate模块 npm install --save @ngx-translate/core ...