接口测试工具使用之postman

RESTful概念

首先, 明确RESTful, 他是一种理念,是一种设计规范

REST,全称Representation State Transfer(表现层状态转化) Resource Representation State Transfer(资源在网络中以某种形式进行状态转化)

资源

资源是RESTful中核心概念之一,每一样信息都可以定义为资源:文本,土拍你,音频、视频,而这些资源有一个统一的URI(统一资源标识符)

URI为每一个资源地址或者独一无二的标识符,通过路径找到资源

/api/v3/user/login

表现层

针对上面的资源,需要响应的展示,可以由多种的形式,把这种形式成为表现层

text: json, xml,yaml,html

状态转化

资源通常放在服务器,而客户都安对服务器的资源进行,增加,删除,修改,查询等操作,便涉及到资源的状态发生变化。这个过程就是状态的转化

怎么进行操作

基于HTTP协议,如何进行资源的修改:利用HTTP方法,GET、POST、PUT、 Delete

RESTful

URI- 规范 - URI不能出现动词/ 每一个URI代表一个资源(实体)

用法- 方法,HTTP方法,客户端通过HTTP的动词方法,对服务器的资源进行操作

Transfer

例子:

GET /zoos 获取所有的动物园

POST /zoos 新增一个动物园

GET /zoos/ID:获取某个指定的动物园ID信息

PUT /zoos/ID:更新某个指定的动物园信息

DELETE /zoos/ID:删除指定动物园

GET /zoos/ID/animals: 列出指定动物园中的所有的动物

DELETE /zoos/ID/animals/ID 删除一个动物

过滤信息

http://domain.com/api/v1/resource?limit=10: 指定返回的记录数量

?page=2&per_page=100: 指定第几页,以及每页记录数量

postman

如何使用,了解工具的基本组成部分

了解工具的基本的语法规则

掌握你的需要的功能(功能串接你的脚本)

掌握工具的思想是什么?

实现的业务(功能) - 帮助我们实现API接口调用

过程(流程)- 可以把接口组织起来(顺序)

使用方法 - 如何实现 1, 2, 3 这几个关注点

参数化

断言

进行接口测试得流程
建立测试集
编写测试用例
接口得主要要素
方法,url
请求头,请求体,解决参数问题
断言

postman

URL 有参数的时候,在query params填写参数,如果没有,就不用管

Content-Type:application/x-www-form-urlencoded , body中对应的选择 x-www-form-urlencoded

Content-Type:application/json, body中对应的选择 raw,以及最右边的菜单 json

postman参数化:
在这里插入图片描述可设置环境变量和全局变量:
环境变量,所需要的接口运行时选择环境变量名称
全局变量,所有接口可用
引用参数:用双花括号 {{参数名}}

接口关联
1,json提取
在这里插入图片描述相关接口引用:{{access_token}}

2,正则表达式,返回接口是html使用,是从响应体里提取
在这里插入图片描述match:匹配
new ReqExp:自定义规则
括号里是要匹配的内容,如果取值多个,根据下标取最终结果

3,在响应头或者时cookie里提取
在这里插入图片描述postman,getResponseCookie:postman自带提取cookie方法啊

使用 变量参数化

var res_code = pm.environment.get(“res_code”);

var login_text = pm.environment.get(“login_pass”)

//使用js code将string convert to integer

var res_code_int = new Number(res_code)

//将变量输出到控制台,验证变量获取是否成功

console.log(res_code_int)

pm.test(“Status code is 200”, function () {

pm.response.to.have.status(res_code_int);

});

pm.test(“Body matches string”, function () {

pm.expect(pm.response.text()).to.include(login_text);

});

  1. 使用文件进行参数化/数据驱动的时候,第一行的名字,必须和脚本中使用变量名称一致

//login_text从文件接收参数

// 这里注意一个关键字就是data,data指定文件中的第一行的字段

var login_text = data.expected_result

console.log(login_text)

pm.test(“Status code is 200”, function () {

pm.response.to.have.status(200);

});

pm.test(“Body matches string”, function () {

pm.expect(pm.response.text()).to.include(login_text);

});

postman解析json字符串

在这里插入图片描述

postman如何实现接口的关联(1. 上一个接口的值,变成下一个接口参数)

// poseman实现接口关联
// 写对应的变量名和值,使用set
pm.environment.set("myvar","myvalue")
// 获取变量
// var temp_date = pm.environment.get('myvar')
// console.log(temp_date)
// 申明为全局变量
pm.globals.set("allmavar","allmyvalue")
// 获取全局变量
var temp_date=pm.globals.get("allmavar")
console.log(temp_date)

获取响应的文本

pm.response.text()

获取响应的header

pm.response.headers //获取的结果一个array/list套字典,

response的headers中自己获取 sessionid

在这里插入图片描述

通过response.json()方法帮助我们进行json的解析,对象的转换

在这里插入图片描述postman做断言:
第一种:根据状态码
在这里插入图片描述1、判断请求返回的状态为200,200就是正常

pm.test(“Status code is 200”, function () {

pm.response.to.have.status(200);

}); // 判断返回响应中的其它字段的值时,同样使用该方法可以实现

或者使用

tests[“Status code is 200”] = responseCode.code == 200;

“Status code is 200”:此处的文字信息可以任意定义(填写),只要能够方便我们自己辨别是什么意思就可以了

(运行的结果在“Test Results”中查看)

2、判断请求返回中其它字段的值(或状态)

pm.test(“Body matches string”, function () {

pm.expect(pm.response.text()).to.include("string_you_want_to_search");

});

“Body matches string”:此处的文字信息可以任意定义(填写),只要能够方便我们自己辨别是什么意思就可以了

“string_you_want_to_search”:此处填写的时我们需要判断的字段的值
在这里插入图片描述3、获取json数据,并校对返回值的正确性
var res = JSON.parse(responseBody); // 先获取到返回的json数据

tests[“rsp的值是否为操作成功”] = res.rspInf == “操作成功”;

tests[“判断data的第二个元素的值是否正确”] = res.data.loginTime === 1548607006000;

或者

pm.test(“判断psCd是否=00000”, function () {

var res = pm.response.json();

pm.expect(res.rsCd).to.eql("00000");        //    判断rsCd的值是否正确

});

pm.test(“判断role是否=admin”, function () {

var jsonData = pm.response.json();

pm.expect(jsonData.data.role).to.eql("admin");            //    "判断data的第三个元素的值是否正确

});
pm.test(“返回的json数据中是否有rsCd”, function () {

pm.response.to.have.jsonBody("rsCd");        // 判断json数据中是否含有rsCd这个字段

});

4、判断响应时间

pm.test(“Response time is less than 200ms”, function () {

pm.expect(pm.response.responseTime).to.be.below(200);

});

“Response time is less than 200ms”:此处的文字信息可以任意定义(填写),只要能够方便我们自己辨别是什么意思就可以了

5、判断返回数据的类型

var res = JSON.parse(responseBody); // 先获取到返回的json数据

tests[“判断loginTime的值的类型是否是number”] = typeof(res.data.loginTime) === “number”;

tests[“判断rsCd的值的类型师是否是string”] = typeof(res.data.loginTime) == “number”;

// 比较常用的集中类型:number、string、object、array、boolean、undefined

6、判断返回数据中是否存在某个元素

tests[“判断返回的元素中是否有data”] =responseBody.has(“data”);

tests[“判断返回的元素中是否有rsCd”] =responseBody.has(“rsCd”);

postman抓接口****浏览器设置代理所用附件
只要需要代理的都可以使用这个设置,包括fidder postman jmeter
在这里插入图片描述打开这个功能
在这里插入图片描述浏览器添加组件
在这里插入图片描述按序设置
在这里插入图片描述按序设置
在这里插入图片描述进行抓包
postman生成接口文档
在这里插入图片描述在这里插入图片描述可以选择生成代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值