zoukankan      html  css  js  c++  java
  • (转)接口自动化测试之http请求实践总结

    一、接口测试的基本思路

    1、确定要测试接口的请求类型。接口是get请求还是post请求。

    2、确定接口的参数。需要传输的参数有哪些,类型分别是什么,都有哪些要求等。

    3、按照参数要求构造请求需要的参数,构造其他的请求信息,模拟发出请求。

    4、对http请求返回的响应体进行解析,对解析中的部分或全部字段和预期结果进行对比。

    除此之外,要模拟发送请求还有一些额外的操作,如登录要操作的系统、获取对应的权限等。

    二、请求参数数据的构造

    1、GET请求

    • 直接拼写

              只有一个参数,则直接拼写在域名后边:String url1 = "http://域名?+参数=值";

                 有多个参数,则利用&进行拼接:String url2 = "http://域名?+参数1=值&参数2=值";

    • 利用DataProvider

               DataProvider功能,即可以使用多组测试数据来驱动一个测试方法,只是测试数据不一样,减少不必要的代码重复。

    实例: 

    2、POST请求

         针对post请求,一般比较简单的是直接使用JSONObjectJSONArray类型的参数进行传递。一般参数会有类型限制,可以根据需求进行选择。

    实例1:参数都是String类型,直接传各个参数


    实例2:参数为Long和int类型,将参数拼接后传输json格式


    实例3:字符串数组,可以使用List<String>


    实例4:JSONArray


    三、返回数据的校验

    (1)、返回JSON数据

          在对响应进行解析时,需要根据返回的数据结果进行不同的校验。比较常见的有两种,下面分别进行说明。

           对JSON数据类型的校验,一般通过JSONArray或JSONObject对返回的数据进行解析,针对其中比较重要的字段和预期结果进行对比。

     1、JSON简介

          JSON是一种基于纯文本的数据格式,JSON协议是一种数据传输协议,只用来传输数据。JSON用Key-Value键值对来表示数据,其中Key只能用String表示。

     2、JSONObject和JSONArray的区别

    • JSONObject是一个Key-Value对,通过key获取value,JSONArray是一个数组,通过index即位置获取内容。
    • 表现形式:JSONArray是以“[]”包裹起来的数组(Array数组),而JSONObject是“{}”包裹起来的对象(Object对象)。
    • 转化:因为JsonObject的Value可以继续是JSONObject或JSONArray,所以解析的时候,会存在转化。

    实例:

     1、JSON数据一jsonOne如下图所示:

        

       这个JSON数据的Key-Value对中的Value都是直接的值,可以通过方法直接获取。此时,我们只需要对此数据进行解析,然后对字段进行校验即可。利用TestNG进行校验,代码如下:

       

     2、JSON数据二jsonTwo如下图所示:

       

        可以看出,此JSON数据中,有部分Value是可以直接获取,但是Key-commonLimits对应的Value则是JSONObject的数组, 所以需要通过JSONArray获取到JSONArray之后再对其中的数据进行校验。利用TestNG对commonLimits中第一个 JSONObject的key-categoryId进行校验,代码如下:

      
     附:

     JSONArray官方文档:http://json.org/javadoc/org/json/JSONArray.html

     JSONObject官方文档:http://json.org/javadoc/org/json/JSONObject.html


    (2)、只返回参数用来渲染html页面

     1、jsoup简介

     2、解析html字符串

         方法:parse(String html)

         作用:此方法将输入的HTML解析为一个新的文档(Document),然后可以使用Document中适当的方法或它父类Element和Node中的方法来取得相关数据。

         实例:一个字符串表示的htmlString,其中包含“文字",利用TestNG对其进行校验,代码:

          

  • 相关阅读:
    In Java, how do I read/convert an InputStream to a String? Stack Overflow
    IFrame自动更改大小
    [置顶] 获取服务器上格式为JSON和XML两种格式的信息的小程序
    Qt VS MFC
    [技术分享]使用 UAG 发布 RemoteAPP
    linux2.6.32在mini2440开发板上移植(11)之配置USB外设
    MFC控件(2):Text_Edit_Control
    CentOS 6.4 安装 Oracle 10g2 备记
    sql lite 二个数据库之间的表进行复制
    变量和函数的定义和声明
  • 原文地址:https://www.cnblogs.com/a00ium/p/6624918.html
Copyright © 2011-2022 走看看