接口自动化测试之http请求实践

时间:2022-05-22 23:14:46

一、接口测试的基本思路

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

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

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

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

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

 

二、请求参数数据的构造

1、GET请求

  • 直接拼写

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

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

  • 利用DataProvider

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

实例: 接口自动化测试之http请求实践

2、POST请求

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

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

接口自动化测试之http请求实践

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

接口自动化测试之http请求实践

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

接口自动化测试之http请求实践

实例4:JSONArray

接口自动化测试之http请求实践

三、返回数据的校验

(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如下图所示:

    接口自动化测试之http请求实践

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

   接口自动化测试之http请求实践

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

   接口自动化测试之http请求实践

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

  接口自动化测试之http请求实践
 附:

 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对其进行校验,代码:

      接口自动化测试之http请求实践