博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)接口自动化测试之http请求实践总结
阅读量:5237 次
发布时间:2019-06-14

本文共 1748 字,大约阅读时间需要 5 分钟。

一、接口测试的基本思路

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

      

转载于:https://www.cnblogs.com/a00ium/p/6624918.html

你可能感兴趣的文章
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>