• 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 + "
    ";
    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

  • 相关阅读:
    bash 学习笔记5
    zookeeper启动脚本修改
    java enmu 使用说明
    bash 学习笔记4
    zookeep集群搭建说明
    bash 学习笔记3
    集群配置问题
    hadoop hdfs 总结(1)
    bash 学习笔记6
    bash pitfall
  • 原文地址:https://www.cnblogs.com/muzipaopao/p/11128432.html
Copyright © 2020-2023  润新知