在使用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

转载于:https://www.cnblogs.com/muzipaopao/p/11128432.html

jmeter使用问题——将接口返回变量存储成csv文件相关推荐

  1. python转csv_python如何将列表存储为csv文件

    python是最近几年火起来的一门编程语言,它对数据的处理拥有非常大的简洁性和快速性,并且它还可以将任意数据转储成其他文件格式.接下来我教大家如何用python将列表存储为csv文件. 工具/原料 p ...

  2. scrapy实战----将数据存储到csv文件和MySQL数据库中

    本章将通过爬取51jobs求职网站中的python职位信息来实现不同方式的数据存储的需求. github地址--->源代码 我们先来看一下:51jobs网站 我们需要的数据有,职位名 公司名 工 ...

  3. selenium爬取巨潮资讯指定领域下所有上市公司的数据并存储到csv文件

    selenium爬取巨潮资讯指定领域下所有上市公司的数据并存储到csv文件 from selenium.webdriver import Chrome #引入selenium中的Chrome from ...

  4. 数据存储在.csv文件乱码,数据写入才一部分就报错'gbk' codec can't encode character '\xee' in position 45: illegal multibyte

    使用python爬虫爬取规则数据后转化成来List格式,将其存储在.csv 文件中 使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeE ...

  5. 【python学习】批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件

    批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件 Materials Studio在执行dmol3模块中结构优化任务时,任务结束后会产生一系列的输出文件 ...

  6. 接口返回值转成json

    接口返回值结果转换成JSON,具体的方法如下: public static String GetJsonValue(String result,int index,String key){int in ...

  7. c++ 写入文件_利用Python把数据存储在csv文件中

    鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧.人生最幸福的事情莫过于看到自己写的程序调试通过了! 前面我们介绍了,如何用Python做一个串口通讯的上位机.用这个上位机我们可以从E ...

  8. Kaggle之数据集的使用(2)类别存储在csv文件中

    链接:Plant Seedlings Classification | Kaggle 木薯叶病分类数据集中训练图片全部在一个文件夹中,并没有分类到各个对应的文件夹,采用train.csv来存储图片名称 ...

  9. 前端请求接口,接口返回字节流,下载word文件到本地

    一.接口准备 // 下载word模板getAttorneyTemplate(data){return axiosApi({method:'GET',url:apiList.attorneyTempla ...

最新文章

  1. python只读打开文件_Python 文件只读打开模式是???????????????????????????????????????
  2. win10下处理“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”
  3. WF(工作流)模块介绍
  4. ajax post 表单和 json 字符串
  5. org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PUT' not supported
  6. c0000005错误怎么解决_iTunes提示3194未知错误怎么办【解决方法】
  7. 电子商务应用课程知识整理 第四章-搜索引擎
  8. 计算机不能进入桌面,电脑开机无法进入桌面,请高手解决。
  9. sqldeveloper创建账号_用oralce 自带工具sql developer 创建表空间,用户,权限
  10. django创建新的项目、App与基本配置
  11. CentOS系统缺少库文件解决办法
  12. [bzoj1269]文本编辑器editor [bzoj1500]维修数列
  13. [渝粤教育] 云南大学 高等数学B(2) 参考 资料
  14. pb与java_Java中使用PB教程
  15. 解决 fast api “detail“: “There was an error parsing the body“问题
  16. 牛牛战队的比赛地 (三分)
  17. Chrome安装CRX插件方法
  18. java自动发图文微博_使用node搭建自动发图文微博机器人的方法
  19. 如何设计宝贝详情页提高转化率?
  20. 防抖和节流以及应用场景

热门文章

  1. cdrx4被禁用怎么解决_双显卡怎么切换到独立显卡
  2. MySQL数据库的常用操作
  3. [转]linux系统增加swap大小方法(安装oracle可能需要)
  4. TreeSet的定制排序
  5. 剑指Offer #10 矩形覆盖(问题分析)
  6. Java的Arrays.sort()良心总结
  7. linux中and运算符文件重定向,linux 重定向问题详解
  8. xp mysql字符集与乱码_mysql字符集(GBK、GB2312、UTF8)与中文乱码的原因及解决
  9. Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
  10. vuex状态持久化_Vuex数据状态持久化