测试工具postman使用简介
简介
https://www.postman.com/downloads/
postman是一个商业化的接口测试工具,有收费版本pro和免费版本的,一般免费版本已经够用了。
postman分为chrome插件版和native版本,插件版官方已经不维护了,而且插件版的有很多功能都受限制,比如,native必须要安装扩展才可以操作cookie,headers设置受限制,没有native版本的Postman console,非常不方便调试。所以,建议使用native版本。
postman是接口测试的神器之一,可以发送几乎所有类型的HTTP请求,前身是google-chrome的一个插件,2018年初google停止了对chrome应用程序的支持,postman插件就无法使用了,不过我们可以到postman的官网下载对应的程序。
使用场景
postman发送请求给服务器,然后从服务器接受响应,最后在postman中展示出来。
- 开发接口,快速调用接口、调试
- 测试接口,调用接口,通过不同的参数去测试接口的输出
- 反复运行端口
- 支持断言
postman优点
- 支持各种类型的请求:GET、POST、PUT、PATCH、DELETE等(其中最常用的是GET和POST)
- 支持请求头(Headers)的各种自定义,如:[{"key":"Content-Type","value":"application/x-www-form-urlencoded","description":"POST请求默认方式","enabled":true}]
- 支持请求自定义参数的设置
- 支持10种不同的授权认证机制,如:Inherit auth from parent、Bearer Token、Basic Auth、Digest Auth、OAuth 1.0,OAuth 2.0等
- 支持collection、folder数据在线存储:可根据账号来实现数据的迁移
Params和Body的区别
Params和Body的区别:Params处设置的变量请求时会以问号后面的参数的形式带到请求的接口链接里,而Body里设置的参数则是接口真正请求时发的参数。
请求体类型:
①form-data
multipart/form-data是Web表单用于传输数据的默认编码。这模拟了在网站上填写表单并提交它。表单数据编辑器允许我们为数据设置键-值对。我们也可以为文件设置一个键,文件本身作为值进行设置。
②x-www-form-urlencoded
该编码与URL参数中使用的编码相同。我们只需输入键-值对,Postman会正确编码键和值。请注意,我们无法通过此编码模式上传文件。表单数据和urlencoded之间可能存在一些差异,因此请务必首先检查API的编码实现,确定是否可以使用这种方式发送请求。
③raw
RAW请求可以包含任何内容。除了替换环境变量之外,Postman不触碰在编辑器中输入的字符串。无论你在编辑区输入什么内容,都会随请求一起发送到服务器。编辑器允许我们设置格式类型以及使用原始主体发送的正确请求头。我们也可以手动设置Content-Type标题,这将覆盖Postman定义的设置。
④binary
二进制数据可让我们发送Postman中无法输入的内容,例如图像,音频或视频文件。当然了,我们也可以发送文本文件。正如前面在表单数据部分中提到的,如果通过历史记录或集合加载请求,则必须重新附加文件。
4.Cookie登录
有些接口请求之前需要有前置条件,比如购买接口请求时就要先验证是否账户处于登录状态,是否安全之类的,这时我们就需要登录Cookie来登录,方法是在其他端登录之后,抓包获得登录Cookie,在header里新建一个参数Cookies,值为抓包获得的Cookie值
postman界面熟悉
postman的界面非常的友好,没有过多的累赘功能,呈现出来的都比较好理解
4.1左上角菜单功能
- File主要用来操作文件,如新建、导入、设置、关闭窗口、退出等
- Edit用来编辑操作,如撤销、重做、剪切、复制、粘贴等
- View用来设置postman软件的浏览方式,如全屏、放大、缩小、切换tab请求框等
- Collection集合相当于其他软件的一个项目,可以新建集合、导入、集合运行配置
- History不言而喻就是运行历史了
- Help帮助接口,如升级、文档、支持、GitHub、Twitter等
4.2左侧界面
上面三个都是比较熟悉的功能在菜单界面已经介绍过了,这里就简单的带过
- New:新建request请求、collection集合、environment、documentation、mocker server、monitor
- Import:postman支持json和csv格式的导入
- Runner:运行配置,如配置延迟时间、迭代次数等
- 添加的collection及fodler会显示在左侧白框框中,层级依次是collection-folder-request
4.3右上部分
此部分主要是request请求区,可以设置请求相关的参数,如授权机制、请求头、数据体、请求setup、用例等
4.4右下部分
此部分主要包含response响应数据区,可以通过此区域接受服务器的响应数据并查看。
1)侧边栏
History:历史脚本
Collection:测试集合管理区域
New:可以创建request(请求)、Collection(集合)、Environment(环境变量)等。
2)请求配置区域
code:可以生成请求代码,支持python、java等语言。
3)响应展示区域
测试结果展示区域:
4)导入导出
导出数据包
导出环境变量
导入数据包
导入环境变量
5)发送get请求
6)发送post请求
form-data:
x-www-form-urlencoded
raw:
可以上传任意格式的文本,如text、json、xml、html等
binary:
相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
三、postman变量
1、全局变量(global variables):是指在所有的环境里变量值都是一样的,全局变量的作用域是所有请求。
2、集合变量(collection variables):针对集合设置的变量,只对集合内的请求有效。
3、环境变量(environment variables):指在不同环境下(如:生产环境/测试环境),同一个变量值随着环境的不同而变化。
4、本地变量(local variables):主要是针对单个URL请求设置的变量,作用域只是局限在请求范围内。
5、数据变量(data variables):通过导入外部数据文件(json/csv文件),来获取变量的数据。
环境变量与全局变量的添加与编辑
集合变量的添加与编辑
设置本地变量
变量的作用域与优先级
作用域:
作用域:
data<local<environment<collection<global
优先级:
data>local>environment>collection>global
变量的用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /*pm.globals*/ pm.globals.has(variableName:String) //检测全局变量是否包含某个变量---返回布尔值 pm.globals.get(variableName:String) //获取全局变量中的某个值 pm.globals.set(variableName:String, variableValue:String) //为某个全局变量设置值 pm.globals.unset(variableName:String) //销毁某个全局变量 pm.globals.clear() //清除全局变量 pm.globals.toObject():function → Object //将全局变量转成一个对象的形式 /*pm.environment*/ 与globals一致 /*pm.variables/ pm.variables.has(variableName:String):function → Boolean pm.variables.get(variableName:String):function → * pm.variables.toObject():function → Object |
动态变量
{$guid}}:生成一个v4风格的guid
{{$timestamp}}: 生成一个当前时间戳
{{$randomInt}}: 生成一个0-1000的随机数
更多参考:
https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference/
四、postman脚本
Pre-request Script:预请求脚本是与在发送请求之前执行的代码片段。适合请求的参数化。
Test Script:请求结束并获取到响应数据之后执行的测试脚本。
脚本的执行顺序
脚本的位置
1)集合中的脚本
2)文件夹中的脚本
3)单个请求中的脚本
运行环境
预编译脚本和Test脚本都运行在沙箱(Sandbox)中,而沙箱就是postman内置的一个JavaScript运行环境。
pm对象-object
pm对象包含正在执行的脚本相关的所有信息,并允许访问正在发送的请求或接收的响应的副本。还允许获取和设置环境和全局变量。
pm.request-object
pm请求对象表示正在运行此脚本的请求。对于预请求脚本来说,这是将要发送的请求;而在测试脚本中,这是已发送请求的表示形式。
pm.request.url:请求的Url
pm.request.headers:请求头
pm.request.headers.add(headerName:String):增加请求头
pm.request.headers.delete(headerName:String):删除请求头
pm.response-object
在测试脚本中,pm.response对象包含与接收到的响应相关的所有信息。
pm.response.code:获取当前请求返回的状态码如200,404,500等
pm.response.headers:返回当前请求成功后的response的headers
pm.response.responseTime:获取此次请求的时间单位为ms
pm.response.text():以文本的方式获取响应里面的body的内容
pm.response.json():将body里面的内容解析为一个json对象
测试方法:
pm.test(testName:String, specFunction:Function):第二个方法中填写测试内容
断言
pm.expect(assertion:*):断言方法,此函数用于处理来自响应或变量的数据断言。
常用脚本
(1)检查状态码是否为200
(2)检查json类型响应的值
(3)检查响应体是否包含某字符串
(4)pm.sendrequest函数:允许异步发送http/https请求
只有url的请求
带参数的请求
脚本关联
关联指用前一个请求的返回值,作为后一个请求的参数。
token关联举例:
设置环境变量
使用环境变量作为参数
五、postman运行
集合可以使用特定的环境,作为一组请求一起运行。通过使用脚本,我们可以构建集成测试案例,在API请求之间传递数据,并构建反映实际API使用情况的工作流。
我们可以通过Postman应用程序中的“Collection runner”,或者通过命令行使用Postman’s Newman工具,或者通过Postman监视器来运行集合中的所有请求。
1)Runner运行
使用外部文件
2)monitor运行
配置:
运行结果
3)newman运行
Newman是postman的一个命令行运行者。它允许直接从命令行运行和测试postman集合。他是以可扩展性为基础构建的,因此可以轻松将其与持续集成服务器集成并构建系统。
Newman的安装
1、安装node.js
2、打开控制台,运行npm install -g newman
3、控制台输入newman -v,如下出现版本号表示安装成功
4、如果想生成html格式的测试报告,还需要安装 newman-reporter-html
npm install -g newman-reporter-html
Newman 执行脚本
命令行运行测试集合,cmd 进入到pmtest的json文件的目录下,输入指令
newman run postmanEcho.postman_collection.json(测试脚本) -e 运行环境 -d 测试数据 -r 测试结果报告格式(xml 、json、junit的xml,html)
配置jenkins集成
1)配置环境变量
2)创建项目
3)构建结果
请求
1、简单的Get请求:
参考:http://www.python-requests.org/en/master/user/quickstart/
GET:HTTP的常用请求方法。
"https://api.github.com/events":请求的URL
点击蓝色“Send”按钮,获取返回值。
注: GET请求的参数在url后面拼接,如:"https://api.github.com/events?id=1&name=user"
2、简单的POST请求
参考:http://www.python-requests.org/en/master/user/quickstart/
POST:HTTP的常用请求方法。
"http://httpbin.org/post":请求的URL。
Body:设置POST请求的参数。
- form-data: HTTP请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。
- x-wwww-form-urlencode:HTTP请求中的application/x-www-from-urlencoded,会将表单内的数据转换为键值对。
- raw:可以发送任意格式的接口数据,可以text、json、xml、html等。
- binary:HTTP请求中的相Content-Type:application/octet-stream,只可以发送二进制数据。通常用于文件的上传。
3、Postman认证接口
创建一个接口调用:
参考:http://www.python-requests.org/en/master/
Authorization:用于需要认证的接口。
Basic Auth:最基本的一种认证类型,还有OAuth 1.0/2.0、Digest Auth等认证类型。
Username/Password:这是针对Basic Auth类型的认证的用户名/密码,并非我们认为的系统登录的用户名密码。