(转)接口自动化测试之http请求实践总结
一、接口测试的基本思路
1、确定要测试接口的请求类型。接口是get请求还是post请求。
2、确定接口的参数。需要传输的参数有哪些,类型分别是什么,都有哪些要求等。
3、按照参数要求构造请求需要的参数,构造其他的请求信息,模拟发出请求。
4、对http请求返回的响应体进行解析,对解析中的部分或全部字段和预期结果进行对比。
除此之外,要模拟发送请求还有一些额外的操作,如登录要操作的系统、获取对应的权限等。
二、请求参数数据的构造
1、GET请求
- 直接拼写
只有一个参数,则直接拼写在域名后边:String url1 = "http://域名?+参数=值";
有多个参数,则利用&进行拼接:String url2 = "http://域名?+参数1=值&参数2=值";
- 利用DataProvider
DataProvider功能,即可以使用多组测试数据来驱动一个测试方法,只是测试数据不一样,减少不必要的代码重复。
实例:
2、POST请求
针对post请求,一般比较简单的是直接使用JSONObject或JSONArray类型的参数进行传递。一般参数会有类型限制,可以根据需求进行选择。
实例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对其进行校验,代码:
(转)接口自动化测试之http请求实践总结的更多相关文章
- java 接口自动化测试之数据请求的简单封装
我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...
- python接口自动化(delete请求)
python接口自动化(delete请求) 一.delete请求的目的:删除资源 二.应用 导包:import requests 调用delete方法:requests.delete(url) 获取响 ...
- python接口自动化(put请求)
python接口自动化(put请求) 一.put请求的作用:更新资源 二.应用 导包:import requests 调用requests.put()方法 参数有URL.data.headers,方法 ...
- python接口自动化(post请求)
python接口自动化(post请求) 一.post请求的作用:新增资源 二.data格式的参数请求(data是字典对象) #1.导包 import requests #2.调用post方法 #请求的 ...
- python接口自动化(get请求)
python接口自动化(get请求) get请求的目的:查询资源 一.导包 二.请求的URL 三.请求的参数 四.获取请求的URL 五.获取响应的状态码 六.获取响应的本文信息 #导包 import ...
- python接口自动化发送get请求 详解(一)
前言:接口自动化实现自动化脚本比较稳定,主要用到requests模块,后面我会把这个模块单独拉出来写一下. 一.环境安装 1.用pip安装requests模块 >>pip install ...
- postman接口自动化测试之如何使用)
postman 是一款强大网页调试工具的客户端,postman为用户提供强大的 Web API & HTTP 请求调试功能.postman能够发送任何类型的HTTP 请求 (GET, HEAD ...
- 接口自动化测试之httprunner初探
❝ 今天来介绍一个python的一个开源项目:httprunner,接口自动化工具.第一次输入,难免有不周到的地方,轻喷~ ❞ 介绍: HttpRunner是一个简单优雅但功能强大的 HTTP(S) ...
- python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功
1.首先在excel中填写好预期结果的值 这里判断接口成功的依据是预期结果值是否存在于接口的返回数据中. 一般接口的返回值都是json对象,我们需要将json对象转换为json格式的字符串 如下图,进 ...
随机推荐
- 问题:oracle 排序 null值放在最后;结果: ORACLE中null的排序问题
ORACLE中null的排序问题 关键字: oracle nulls 问题描述: 在平时的业务处理中,经常遇到要对业务数据进行排序,并且要对null值也做相应的排序.在Oracle中,进行Ord ...
- cookie禁用后非重定向跳转时session的跟踪
- hibernateTemplate方法使用
- 为SSRS配置SMTP服务器身份验证
此处设置外邮地址却无法填写邮箱密码 一.安装SMTP服务 1.在服务管理器中单击“功能” 2.单击“添加功能”打开“添加功能向导”对话框 3.在“选择功能”页上选择“SMTP服务器”并选择“添加必须的 ...
- CDN原理解析
首先,让我们来看一下传统的Internet网络的基本结构和数据传输情况,如下图所示 根据传统的网络结构,用户的访问流程基本如下: 用户在自己的浏览器中输入要访问的网站的域名 浏览器向本地DNS请求 ...
- day35 02-Hibernate持久化对象状态及状态转换
hibernate内置有一个c3p0,不用引入c3p0的jar包也行. 现在其实可以不用去创建表和实体类.因为hibernate可以自动帮我们生成.只要把映射建好了它就可以自动帮我们生成. 创建实体类 ...
- 【总结整理】地理信息系统GIS的基础坐标知识
关于辰青2018.03.31 1.地理坐标系和投影坐标系的区别 答案: 1.地理坐标系统是一种球面坐标,而投影坐标系统是平面坐标 2.投影坐标系统在二维平面上有恒定的长度.角度和面积 3.投影坐标系统 ...
- go语言-工作区和gopath
工作区是放置Go源码文件的目录;一般情况下,Go源码文件都需要存放到工作区中;但是对于命令源码文件来说,这不是必须的. 每一个工作区的结构都类似下图所示:/home/hypermind/golib: ...
- matlab rand(3,5)
rand()函数在(0,1)上创建均匀分布的随机数的数组 >> rand(3,5) ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.63 ...
- java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
这个从二进制来解释: int 是 32 位,也就是最多能表示长度为 32 位的二进制整数.第一位是符号位,表示正负,0 表示正的,1 表示负的.当首位为 1(为负)时,把所有的位取反(0 变成 1,1 ...