在使用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. NFS服务设置

    1.安装NFS服务sudo apt-get install nfs-common nfs-kernel-server 2.配置NFS服务首先需要手动编辑/etc/exports配置文件 权限参数说明如 ...

  2. layui打印表格自定义函数

    函数如下 function print (tablelayid) { var v = document.createElement("div"); var f = ["& ...

  3. 自动获取淘宝API数据访问的SessionKey

    最近在忙与淘宝做对接的工作,总体感觉淘宝的api文档做的还不错,不仅有沙箱测试环境,而且对于每一个api都可以通过api测试工具生成想要的代码,你完全可以先在测试工具中测试之后再进行代码的编写,这样就 ...

  4. GCC链接库的一个坑:动态库存在却提示未定义动态库的函数

    背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...

  5. SYN5301型 毫秒表时间检定仪

       SYN5301型  毫秒表时间检定仪 频率记录仪时间记录仪时间频率信号的精密测量使用说明视频链接; http://www.syn029.com/h-pd-76-0_310_6_-1.html 请 ...

  6. play框架之ORM

    初次接触play2,采用的ebeans作为ORM框架.网上的资料并不多,总结如下: 数据的查询可以放在model类里,也可以放在controllers里面,我更倾向于后者,感觉数据流比较完整,好理解, ...

  7. 为了考PMP,我做了一个刷题小程序

    一.背景 1.我是一名软件工程师,技术出身,担任开发组长,对项目管理不是很熟,所以决定系统学习下项目管理. 2.全球最适合的项目管理学习课程就是PMP,每年有4次PMP考试,证书还是很有含金量的. 3 ...

  8. Nginx学习笔记---服务与集群

    一.集群 什么是集群 服务器架构集群:多台服务器组成的响应式大并发,高数据量访问的架构体系. 特点: (1)成本高 (2)能够降低单台服务器的压力,使用流量平均分配到多台服务器 (3)使网站服务架构更 ...

  9. AppBoxFuture: 大数据表分区的3种策略

      之前的文章"分而治之"在介绍大表分区时,作者尚未实现不同的分区策略,即只能按指定的分区键进行分区.这次作者完善了一下分区策略,在规划大表分区时可以按Hash或者时间范围进行分区 ...

  10. 移动IM开发指南1:如何进行技术选型

    <移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...