ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Postman接口请求实战

2021-10-26 20:05:06  阅读:258  来源: 互联网

标签:实战 请求 对象 断言 接口 响应 pm response Postman


请求体与Content-Type头域

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

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

pm对象

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

pm.info对象

pm.info对象包含与正在执行的脚本有关的信息,如请求名称、请求ID和迭计数等有用信息储存在该对象中
在这里插入图片描述

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对象提供以下方法对全局变量进行操作
在这里插入图片描述

pm.environment对象

pm.environment对象提供以下方法对环境变量进行操作
在这里插入图片描述

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():用于从一个对象解析出字符串

标签:实战,请求,对象,断言,接口,响应,pm,response,Postman
来源: https://blog.csdn.net/qq_35653145/article/details/120947060

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有