Postman接口请求实战

请求体与Content-Type头域

在使用POST方法进行接口测试时,需要特别注意请求参数在body体中的格式及请求头中Content-Type头域,头域规定了接口接受的请求参数传值格式
在Postman请求体传递参数时,在body菜单中设置请求体的格式:
Postman接口请求实战

x-www-form-urlencoded : 对应于头域中Content-Type的值为x-www-form-urlencoded,该类型是以键值对形式发送的表单参数,同时参数会携带在url中。
form-data : 对应于头域中Content-Type的值为multipart/form-data,该类型既可以发送键值对也可以进行文件参数传递。
raw : 可以使用请求体原始格式编辑各Content-Type类型对应的参数格式,直接按请求体的格式来进行内容发送
binary :用于发送文件内容请求

环境变量与全局变量

接口测试过程中,经常需要使用已经设定好的参数或者从其他接口的返回中获取变化的参数,Postman提供了变量的机制供这种场景使用,使用变量的格式为{{变量名}}来调用变量的值。

环境变量:一个变量只能属于某个环境,在某一个环境中变量不可重复定义;
在环境与环境之间可以定义重复的变量;
一个环境可以包含多个环境变量;
常见环境分类:开发环境、测试环境、生产环境。url的值不一样
全局变量:**多个环境公用的变量,全局变量是全局唯一的,不可重复定义的变量,**比如token。
如果环境变量中存在与全局变量相同的变量名,环境变量中变量优先级高于全局变量

如何增加环境变量和全局变量

添加环境变量
Postman接口请求实战
Postman接口请求实战
添加全局变量
Postman接口请求实战
Postman接口请求实战

测试沙箱

Postman测试沙箱其实是结合JS脚本完成测试中的功能,在请求发起前后实现部分测试操作。
常用功能:
请求前脚本(pre-request scripts)设置请求前置操作,如获取jwt_token,设置变量等;
请求后对状态码、响应头、响应正文等信息进行断言操作;

pm对象

pm对象包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接受到的响应,它还允许获取和设置环境变量和全局变量

pm.info对象

pm.info对象包含与正在执行的脚本有关的信息,如请求名称、请求ID和迭计数等有用信息储存在该对象中
Postman接口请求实战

pm.sendRequest对象

pm.sendRequest对象允许异步发送HTTP/HTTPS请求,并获取其他的返回信息;
在遇到有依赖的接口时,比如需要登录或者需要从前一个接口的结果中获取参数时,往往需要在该请求前先发送一下所依赖的请求, 可以在Pre-request script中使用pm.sendRequest实现

pm.sendRequest("http://www.baidu.com/s?wd=postman",function(err,res){
    if(err){
        console.log(err)
    }else{
        console.log(res.text)
    }
})

pm.globals对象

pm.globals对象提供以下方法对全局变量进行操作
Postman接口请求实战

pm.environment对象

pm.environment对象提供以下方法对环境变量进行操作
Postman接口请求实战

pm.variables对象

pm.variables对象:局部变量,作用范围更小,定义的变量想要在一个请求中使用,就可以使用这个变量
pm.variables.has(“var_name”) :检查当前作用域内是否存在变量var_name,返回boolean类型
pm.variables.get(“var_name”) :获取局部变量var_name的值
pm.variables.set(“var_name”, “value”) : 设置局部变量var_name的值为value
pm.variables.toObject() :返回包含本地范围内所有变量的对象

pm.request对象

pm.request对象用来获取请求对象,但request中的参数只可读
pm.requests.url: 包含发出请求的URL,返回json数据,主要包括了url中的protocol,host,path,query,variable部分 。可以通过.解析出每一部分 。
pm.request.headers :包含发送请求的headers ,返回列表数据 。
pm.request.method : 发送的请求方法
pm.request.body :包含与请求正文相关的所有数据
pm.request.headers.add(headerName):为当前请求添加请求头headerName
pm.request.headers.remove (headerName):删除请求头中的headerName
pm.request.headers.upsert({ key: headerName:String, value: headerValue:String}) : 插入给定当前请求的键值对 。(如果该键不存在,否则将已存在的键值更新为新值)

pm.response对象

pm.response对象包含与收到的响应有关的所有信息 。响应信息格式如下:

pm.response.code : 返回响应状态码
pm.response.status : 返回响应状态消息
pm.response.headers:返回响应头
pm.response.responseTime : 返回响应时间
pm.response.responseSize: 返回响应大小
pm.response.text():返回响应体的文本数据
pm.response.json() :返回响应体的json数据

pm.cookies对象

pm.cookies对象包含一个与请求所创建的域相关联的Cookies列表
pm.cookies.has(“cookieName”) 检查请求的url站点是否存在cookie,返回值Boolean
pm.cookies.get(“cookieName”) 获取存在的cookie的值
pm.cookies.toObject 将请求的url站点中获取到的所有存在的cookie输出到一个对象中去

pm.test对象

格式:pm.test(testName:String, specFunction:Function)
可以使用此方法在Pre-request Script 或Tests标签中,即使该方法内部存在错误,也可以确保脚本的其余部分不会被阻塞。

pm.expect对象

格式:pm.expect(assertion:*)
pm.expect是一个通用的断言函数,大多数用于处理来自响应或变量的数据断言

pm.response.to.be.*对象

通过pm.response.to.be对象属性,可以断言预定义的规则(判断当前请求响应的状态值):
pm.response.to.be.info 检查响应码是否为1XX,如果是则断言为真,否则为假
pm.response.to.be.success 检查响应码是否为2XX,如果是则断言为真,否则为假
pm.response.to.be.redirection 检查响应码是否为3XX,如果是则断言为真,否则为假
pm.response.to.be.clientError 检查响应码是否为4XX,如果是则断言为真,否则为假
pm.response.to.be.serverError 检查响应码是否为5XX,如果是则断言为真,否则为假
pm.response.to.be.error 检查响应码是否为4XX或5XX,如果是则断言为真,否则为假
pm.response.to.be.ok 检查响应码是否为200,如果是则断言为真,否则为假
pm.response.to.be.accepted 检查响应码是否为202,如果是则断言为真,否则为假
pm.response.to.be.badRequest 检查响应码是否为400,如果是则断言为真,否则为假
pm.response.to.be.unauthorised 检查响应码是否为401,如果是则断言为真,否则为假
pm.response.to.be.forbidden 检查响应码是否为403,如果是则断言为真,否则为假
pm.response.to.be.notFound 检查响应码是否为404,如果是则断言为真,否则为假
pm.response.to.be.rateLimited 检查响应码是否为429,如果是则断言为真,否则为假

数据转换

JSON.parse():用于从一个字符串中解析出json对象
JSON.stringify():用于从一个对象解析出字符串

上一篇:记录一个播放hls.m3u8直播流的demo,纯ajax异步通讯示例,


下一篇:postman 高级