• Java接口自动化测试实践(下)


    三,    返回值结果转换成JSON

    通过我们上面的两个函数的调用,我们就可以通过java来进行HTTP请求的接口测试,可是我们通常见的接口返回值是Json字符串。这样可以通过关键字获取相应的字段值 ,而我们模拟请求的接口是字符串,如果内容太多的话,处理起来相当费劲,所以我们需要借助于其他的函数来处理一下返回值。

    具体代码如下:

     

           public static String GetJsonValue(String result,int index,String key)

           {

                  int indexloc,indexkey;

                  String newstr;

                  indexloc=result.indexOf("[");

                  indexkey=result.indexOf(key);

                  //判断Data域的内容

                  if (( indexloc>indexkey || indexloc==-1) & index==0)

                  {

                          JSONObject jsonObj = JSONObject.fromObject(result);

                          return jsonObj.getString(key);

                  }

                  else

                  {

                         newstr=GetNPro(result,index);

                         return GetJsonValue(newstr,0,key);

                  }

                 

           }

          

          

           public static String  GetNPro(String str,int n)

           {

                  Matcher slashMatcher = Pattern.compile("\{").matcher(str);

               int mIdx = 0;

               while(slashMatcher.find()) {

                if(mIdx ==n){

                      break;

                  }

               mIdx++;

               }

               str=str.substring(slashMatcher.start(),str.length());

               return str.substring(0, str.indexOf("}")+1);

            }

    通过上面的两个函数,我们可以将字符串转化成Json字符串,并能通过关键字来提取对应数据。如果要提取的数据是第一层里面的,可以直接提取,如:GetJsonValue (jresult,0,”error”);如果要提出的数据在data中或是更深的json中,则需要指示是第几个数据了,数据以1开始计数,如:GetJsonValue (jresult,2,”name”) 表示获取第二个数据项的name字段的值。

    借助于这两个函数,我们可以根据Key来提取出需要的数据,进而去做我们测试用例的判断,完成对接口的自动化测试。当然我们还可以根据自己业务的需要,去封装获取你需要的数据的函数,以减少工作量。

    四,    封装的函数实践

       经过上面我们封装的调用函数,结果处理函数,就可以通过java代码来完成对HTTP请求的API的调用,数据的获取等功能,下面我们实践一下:

    public static void main( String[] args )

        {

           // Get接口调用

                  String url="http://api.zhongchou.cn/deal/list";

            String params="?v=1";

            String apiresult=GetRequests(url,params);

            System.out.println("errno:"+GetJsonValue(apiresult,0,"errno"));//获取接口返回代码

            System.out.println("name:"+GetJsonValue(apiresult,3,"name"));//获取第三个项目的项目名称

           

                  //Post接口调用

                   String posturl="http://api.zhongchou.cn/user/login?v=1";

                   Map map = new IdentityHashMap ();

                   map.put("identity", "183****8905");       

                   map.put("password", "**********"); 

                   String poresult=PostRequests(posturl,map,null);

                   //获取登录的用户帐号昵称

                System.out.println("Name:"+GetJsonValue(poresult,1,"name"));

           }

          执行上面的调用主函数,查看输出结果,是否和预期是一样的?java功能强大就强大的其封装功能,你可以根据自己的需要去开发相应的jar包或是平台。

        最后我们总结一下:在我们的测试开发工作中,还是先考虑开源的框架,现成的包或是模块,以最少的工作量来快速解决问题。有些儿时候为了保持公司的平台或是框架的一致性,还需要统一语言的,此时就可以考虑封装自己的框架或是函数。

  • 相关阅读:
    第五周反向传播算法
    PHP数组排序
    <meta-data>
    Android之Intent
    Fragment生命周期
    前端后台学习笔记汇杂
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
    用java将excel中数据导入mysql
    幸运观众抽奖
    JTextField
  • 原文地址:https://www.cnblogs.com/eagleking0318/p/6520752.html
Copyright © 2020-2023  润新知