做任务送科比网站/seo外推
0、什么是接口
接口就是两个相独立的部件之间交互信息的介质
1)单元测试接口
(1)函数级别
(2)模块级别
(3)服务级别(把一部分模块组织起来,实现某些特定功能)
a.气象大数据平台(http://data.cma.cn)
b.微信开放平台(https://open.weixin.qq.com)
一、Postman简介
一般简单的接口测试我们可以直接在浏览器里面进行调试,但是涉及到一些权限设置的就无法操作了,因些我们需要接口测试的相关工具,Postman是一个接口测试和http请求的工具。
下载地址:https://www.getpostman.com/downloads/
Postman API文档:https://docs.postman-echo.com/
Postman的特点:
• 支持各种的请求类型:get、post、put、patch、delete等
• 支持在线存储数据,通过账号就可以进行迁移数据
• 很方便的支持请求header和请求参数的设置
• 支持不同的认证机制,包括Basic Auth,Digest Auth,Oauth1.0,Oauth2.0等
• 响应数据是自动按照语法格式高亮的,包括HTML,JSON和XML
二、Postman的使用
1.注册页
2.引导页
3.主界面
4.Postman工作原理
当我们在postman中输入请求并单击Send按钮时,服务器将接收到请求并返回postman在接口中显示的响应。
三、发送不同类型HTTP请求
1.发送GET请求:
HTTP GET请求方法用于从服务器检索数据,数据由唯一的URL(统一资源标识符)标识。GET请求可以使用“Query String Parameters”将参数传递给服务器。
例如:
https://postman-echo.com/get?param1=wang¶m2=8888
(1)请求说明:
param1和param2表示发送的参数
?后面接参数
&连接多个参数
(2)参数编辑
点击Params按钮,Postman可以自动帮我们解析出对应参数。
如果想要暂时不传参数,可以方便的通过不勾选的方式去实现。
如果想要批量的编辑参数,可以点击右上解的Bulk Edit,去实现批量编辑。
2.POST请求
HTTP POST请求方法旨在将数据传输到服务器,返回的数据取决于服务器的实现,POST请求可以使用“Query String Parameters”以及body将参数传递给服务器
【案例1】
在 “Query String Parameters”传递参数。
https://postman-echo.com/post?param=Lebo_wang
【案例2】
发送一个Request,其中body为application/x-www.form-urlencoded类型,参数分别为param1=wang和param2=888
请求URL:
https://postman-echo.com/post
3.PUT请求
HTTP PUT请求主要是从客户端向服务器传送的数据取代指定的文档内容,PUT请求可以使用“Query String Parameters”以及body将参数传递给服务器
【案例】
4.DELETE请求
HTTP delete方法用于删除服务器上的资源,delete请求可以使用“Query String Parameters”以及body将参数传递给服务器
【案例】
5.Response Header
Response Header(响应头)其中包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等。在Postman主界面下方Headers或者Postman Console界面都可以查看Response Header信息
四、接口授权设置
很多时候,出于安全考虑我们的接口并不希望对外公开,这个时候就需要使用授权(Authorization)机制,授权过程验证您是否具有访问服务器所需数据的权限,当您发送请求时,您通常必须包含参数,以确保请求具有访问和返回所需数据的权限。Postman提供授权类型,可以轻松地在Postman本地应用程序中处理身份验证协议。
Postman支持的授权协议类型如下:
1.Basic auth
基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据 资源 ,这就需要我们输入用户名和对应的密码
【案例】
请求URL如下:
https://postman-echo.com/basic-auth
授权账号为:
• 用户名:postman
• 密码:password
• 授权协议为:Basic auth
• 如果不输入用户名密码,直接使用GET请求,则会返回提示:Unauthorized
• 输入用户名密码,选择Basic auth授权类型,则返回如下结果:
不输入密码:
2.Digest Auth
Digest Auth是一个简单的认证机制,最初是为HTTP协议开发的,因此也常叫做HTTP摘要。其身份验证机制非常简单,它采用哈希加密方法,以避免用明文传输用户的口令。摘要认证就是要核实参与通信的两方都知道双方共享的一个口令。
当server想要查证用户的身份,它产生一个摘要盘问,并发送给用户。典型的摘要盘问
例如:
参数说明:
【案例】
请求URL如下:
https://postman-echo.com/digest-auth
摘牌配置信息如下:
3.Hawk Auth
Hawk Auth 是一个 HTTP 认证方案,使用 MAC(Message Authentication Code,消息认证码算法)算法,它提供了对请求进行部分加密验证的认证 HTTP 请求的方法。hawk 方案要求提供一个共享对称密匙在服务器与客户端之间,通常这个共享的凭证在初始 TLS(安全传输层协议)保护阶段建立的,或者是从客户端和服务器都可用的其他一些共享机密信息中获得的。
【案例】
请求URL如下:
https://postman-echo.com/auth/hawk
密钥信息如下:
• Hawk Auth ID: dh37fgj492je
• Hawk Auth Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn
• Algorithm: sha256
将key改为其他任意字符则返回错误信息
4.Oauth1.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用
【案例】
请求 URL 如下:https://postman-echo.com/oauth1,请求方式为 GET
将Add authorization data to 设置为:Request Headers
参数配置为:
• Consumer Key: RKCGzna7bv9YD57c
• Consumer Secret: D+EdQ-gs$-%@2Nu7
返回结果 :
Consumer Secret错误则返回如下结果 :
5.Cookie设置
cookie 是存储在浏览器中的小片段信息,每次请求后都将其发送回服务器,以便在请求之间存储有用的信息。比如很多网站登录界面都有保留账号密码,以便下次登录。
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cokie的工作原理。
Cookie 是由服务端生成,存储在响应头中,返回给客户端,客户端会将 cookie 存储下来,在客户端再次发送请求时,user-agent 会自动获取本地存储的 cookie,将 cookie 信息存储在请求头中,并发送给服务端。postman 可以设置、获取、删除 Cookie。
(1)Set Cookies
在 Send 按钮下方点击 Cookies 文字菜单,然后可以设置 Cookie。
(2)Get Cookies
Cookie 获取比较简单,直接获取 Response Headers 里面的 set-cookie 值即可,或者在主界面下方 Cookie 菜单栏里面也可以查看。
(3)Delete Cookies
点击 Cookies 文字菜单,然后可以根据需求去清除对应的 Cookie。
五、Postman变量
问题思考:在开发不同阶段可能存在不同的环境,比如测试环境和生产环境。
测试环境API如下:
https://dev.postman.com/get
https://dev.postman.com/post
https://dev.postman.com/put
生产环境API如下:
https://postman-echo.com/get
https://postman-echo.com/post
https://postman-echo.com/put
在这种情况下,按照常规思路要么你需要维护两套环境的API,要么每次都手动一个个去修改URL,不管哪种选择都比较麻烦且低效,那么有没有比较好的方法来解决这个问题呢?
Postman变量类型,通过比较我们可以发现以上两组API主要是除了host不同之外其他一样,其实把Host用变量替换,这样就可以灵活切换环境。
Postman 提供了变量设置,共有 4 种变量类型。
• 本地变量(LocalVariable )
• 全局变量(Global Variable)
• 环境变量(Environment Variable)
• 数据变量(Data Variable)
优先级从高到低
Data ---- > Local ---- > Enviroment ---- > Global
1.环境变量
环境变量指在不同环境,同一个变量值随着环境不同而变化,比如我们上面举例场景就可以使用环境变量,当在测试环境时,host 值为: dev.postman.com ,当切换到生产环境时,host 值变为:postman-echo.com 。
环境变量设置: 在 postman 界面点击右上角眼睛图标,即可开始设置环境变量和全局变量。环境变量设置过程如下图所示:我们可以设置两种环境 dev 和 release,dev 是开发测试环境;release 是正式的生产环境。host 环境变量,根据不同的环境值不一样。
1)设置测试环境
2)设置生产环境
2.本地变量
本地变量主要是针对单个 URL 请求设置的变量,作用域只是局限在请求范围内。如请求 URL 如下,设置两个本地变量(user,passwd)作为参数。
(1)应用在请求方式为 POST
设置好后,我们需要给变量赋值,在Pre-request Script里面编写代码
结果如下:
(2)应用在请求方式为get
设置好后,我们需要给变量赋值,在Pre-request Script里面编写代码
结果如下:
3.全局变量
全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。全局变量设置有两种方式:
• 点击界面里设置
• 在脚本里设置
(1)界面设置
点击眼睛图标后,在 Global 选项菜单点击 Edit 菜单即可设置全局变量。全局变量的引用格式和环境变量一样。
注意:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量。
(2)脚本设置
使用如下脚本可以设置全局变量:variable_key 表示变量名称, variable_value 表示变量值。
pm.globals.set("variable_key", "variable_value");
【案例】
在实际接口测试过程,接口经常会有关联。比如需要取上一个接口的某个返回值,然后作为参数传递到下一个接口作为参数。假设我们要获取 A接口返回的userid值 作为B接口的请求参数。
A接口请求URL如下:
https://postman-echo.com/post
请求方式为post
请求参数:userid(这里自动定义,接口会返回对应的id值)
结果如下:
根据返回值我们需要从返回值中提取userid值,在Test标签栏下编写如下脚本获取 userid值
B接口请求URL如下:请求方式为get
先执行A接口的,然后在执行B接口,此时B接口通过全局变量userid可以获得A接口的返回值。
4.数据变量
数据变量是通过导入外部数据 文件(json文件或者csv文件),来获取变量数据 。
六、Postman断言
一般来说执行完测试,我们需要对测试结果来进行校验,判断结果是是否符合我们的预期,也就是断言。在接口测试中一般会根据响应状态码或者响应返回的数据来进行断言。
Postman 提供一个测试沙箱(Postman Sandbox), 测试沙箱是一个 JavaScript 执行环境,可以通过 JS 脚本来编写 pre-request Script 和 test Script。
• pre-request Script(预置脚本)可以用来修改一些默认参数,在请求发送之前执行。有点类似于 unittest里面的 setUp()方法。
• test Script(测试脚本)当接收到响应之后,再执行测试脚本。
【案例】
接口请求URL如下:
Postman-echo.com/post
断言规则
响应状态码:200
响应内容:返回的user参数值与定义的一致
响应时间:小于0.5s
在Per-request Script定义变量user
在Test栏下面编写如下脚本:获取更多学习资料,了解更多课程资讯,请加微信:youhui_510;与同学探讨技术,与老师交流学习问题,请加Q群:470093896。记得备注“B站公开课”哦!
获取更多学习资料,了解更多课程资讯,请加微信:youhui_510;与同学探讨技术,与老师交流学习问题,请加Q群:470093896。记得备注“B站公开课”哦!