首页 > 编程语言 >java接口自动化测试实战003----fastjson处理传入参数为JSON格式数据

java接口自动化测试实战003----fastjson处理传入参数为JSON格式数据

时间:2023-12-22 21:37:56浏览次数:43  
标签:fastjson map java String JSON ---- json parse public

一、fastjson概述

1、概述

     fastjson是阿里爸爸开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

2、常用API

      fastjson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

注:

  • JSONArray : 相当于List
  • JSONObject: 相当于Map<String,Object>

二、json.parse实现解析表格中的json格式参数

1、实现思想

   将要传入的参数以Json形式存储在表格中,通过json.parse解析表格中的Json数据,并存储到map集合中,调用doPost 或者doGet方法时,直接调用存储Json数据的map集合就可以。

2、实现步骤

(1)将要传入的参数以Json形式存储在表格中,并放到项目src/test/resouce目录下,其中表格格式如下图所示:

 

 

(2)在maven的配置文件pom.xml配置FastJson依赖,如下所示:

         <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

(3)编写函数,通过FastJson解析表格中的Json数据,并存储到map集合中,并在doPost 或者doGet方法调用map集合,如下所示:

public class login_v6 {
    //调用ExcelUtil_3,使用JSONObject.parse处理传入数据格式为Json形式,需要将ExcelUtil_3中的表格名称换成Sheet2
    @Test(dataProvider="datas")
     public void login(String parameters) {
        String url="http://127.0.0.1:58088/api/user/smsCodeLogin";
        JSONObject.parse(parameters);
        //将json格式的数据转化为map
        Map<String,String> parameter= (Map<String,String>) JSON.parse(parameters);
        //循环输出map集合中的数据
        Set<String> pa=parameter.keySet();
        for (String pas : pa) {
            System.out.println(pas+"  "+parameter.get(pas));
        }
        //调用post方法,以map结合形式传入参数
          HttpUtil1.doPost(url,parameter);
     }
    @DataProvider
    public Object[][] datas(){
        String excelPath="src/test/resources/测试用例_V1.xlsx";
        int rowNum[]= {1,2,3,4,5,6,7};
        int cellNum[]= {5};
        Object[][] datas= ExcelUtil_3.getDatas(excelPath,"Sheet2",rowNum,cellNum);
        return datas;
    }
}

 

三、json.parseObject实现解析表格中的json格式参数

1、实现思想

   将要传入的参数以Json形式存储在表格中,通过json.parseObject将表格中的Json数据转化为java对象,从对象中取出参数数据并存储到map集合中,调用doPost 或者doGet方法时,直接调用map集合就可以。

2、实现代码

(1)新建loginParameter类,存储登录数据,如下所示:

public class LoginParameter {
  String Mobile;
  String smsCode;
    public String getMobile() {
        return Mobile;
    }
    public void setMobile(String mobile) {
        Mobile = mobile;
    }
    public String getSmsCode() {
        return smsCode;
    }
    public void setSmsCode(String smsCode) {
        this.smsCode = smsCode;
    }
}

 

(2)通过json.parseObject将表格中的Json数据转化为java对象,从对象中取出参数数据并存储到map集合中,如下所示:

public class login_v7 {
    //调用ExcelUtil_3,使用JSONObject.parseObject处理传入数据格式为Json形式,需要将ExcelUtil_3中的表格名称换成Sheet2
    @Test(dataProvider="datas")
     public void login(String parameters) {
        String url="http://127.0.0.1:58088/api/user/smsCodeLogin";
        Map<String,String> parameter=new HashMap<String,String> ();
        //将json格式数据转换为java对象
        LoginParameter loginPara = JSON.parseObject(parameters, LoginParameter.class);
             //从java对象中取出参数数据====手机号和密码
            String mobile = loginPara.getMobile().toString();
            String smsCode = loginPara.getSmsCode().toString();
            //将取出的参数数据添加到map集合中
            parameter.put("mobile",mobile);
            parameter.put("smsCode",smsCode);
           //遍历map集合,判断参数数据是否已经添加到map中
            Set<String> pa=parameter.keySet();
            for (String pas : pa) {
                System.out.println(pas+"  "+parameter.get(pas));
            }
            //输出响应数据
        System.out.println(HttpUtil2.doPost(url,parameter)); 
     }
    
    @DataProvider
    public Object[][] datas(){
        String excelPath="src/test/resources/测试用例_V1.xlsx";
        int rowNum[]= {1,2,3,4,5,6,7};
        int cellNum[]= {5};
        Object[][] datas= ExcelUtil_3.getDatas(excelPath,"Sheet2",rowNum,cellNum);
        return datas;
    }
}

 

四、总结

  •  fastjson概述
  •  json.parse解析json格式数据:使用(Map<String,String>) JSON.parse(parameters)将json格式数据强制转化为map集合形式
  •  json.parseObject解析json格式数据:使用 JSON.parseObject(parameters, LoginParameter.class);将json格式的数据转化为java对象,再从java对象中取出参数数据,添加到map集合。

 

标签:fastjson,map,java,String,JSON,----,json,parse,public
From: https://www.cnblogs.com/geqiandeqingmu/p/13370750.html

相关文章

  • java接口自动化测试实战002----测试数据封装及ExcelUtil优化
    一、利用testNG测试框架进行封装1、封装实现新建测试类,类中新增多个方法,每个方法存储一条测试数据并调用HttpUtl类中的doGet或doPost方法。缺点:代码复杂、繁琐,且不适用测试数据量大的情况。2、封装步骤(1)maven的pom.xml文件中添加testNG测试框架的依赖,如下所示:<!--https://......
  • java接口自动化测试实战004----分表存储接口信息和用例信息之CaseUtil和RestUtil
    一、分表存储用例信息和接口信息1、实现思想  将用例相关信息存储在用例表单中,将接口信息存储在接口信息表单中,创建对应的类存储表单中的信息。2、实现步骤(1)修改表格文件,分表存储用例信息和接口信息,如下图所示:     (2)修改ExcelUtil中的读取函数datas,让表单名称......
  • 12.22
    好像去北京的明天就回来了。......
  • python基础007----递归函数&闭包&装饰器
    一、递归函数1、递归函数概念    直接或间接的调用自身的函数,称为递归函数。每调用一次自身,相当于复制一份该函数,只不过参数有变化,参数的变化,就是重要的结束条件。2、递归函数实例#####递归函数######1、普通实现:计算n!=1*2*3*4*5*6*...*nn=int(input('普通实现阶乘,......
  • 反射
    一、反射概述反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。Appleapple=newApple();//直接初始化,「正射」apple.setP......
  • linux基础01----命令集锦
    Linux命令集锦:一、关机&重启命令:   sync:把内存的数据同步到磁盘,当我们关机或者重启时,都应该先执行下sync命令,把内存的数据写入磁盘,防止数据丢失。   shutdown-hnow:表示立即关机   shutdown-h 1:表示1分钟后关机    shutdown-rnow:立即重启 ......
  • 003元素定位方式与项目demo创建
    一、环境搭建1、创建项目,添加java-client依赖包             新建maven项目,引入java-client依赖包       2、创建并编写代码 测试运行以上代码,运行前需打开Appnium.Appnium没有打开时,运行会报错:Connectionrefused:connect 二、......
  • linux-firewalld 和iptable的策略配置(nat 以及端口开放)
    一、配置防火墙开发端口1、sudoyuminstallfirewalldsudosystemctlstartfirewalldsudosystemctlenablefirewalld2、配置防火墙规则firewall-cmd--permanent--add-service=sshfirewall-cmd--permanent--add-service=httpfirewall-cmd--permanent......
  • linux基础002-----环境搭建1
    一、               vimtools安装    在终端输入gcc-v如果显示gcc的版本说明安装了gcc  之后一直回车          关闭系统后,在虚拟机中找到要克隆的系统,右键---管理---克隆,选择克隆的位置(选择大的磁......
  • Python+Selenium框架实战系列003----测试数据分离与ddt技术&断言
    一、测试数据分离1、新建testData文件夹,新建login_data.py文件,如下所示:   2、在login_datas.py文件中存放测试用例数据,如下所示:#正常场景success_data={"mobile":"17839196010","pwd":"duhui94619"}#异常用例--手机号异常phone_data=[{"mobile":&......