Postman使用-2

转载:https://www.cnblogs.com/yunman/p/7884537.htmlhtml

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。程序员


接口请求流程

1、get请求

GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL连接上,因此,GET请求的请求头与请求参数如在接口文档中无特别声明时,能够不填。json


get请求示例

GET响应:右上角显示响应HTTP状态码、请求的耗时。cookie


get响应示例

需特别注意的是注意区别HTTP状态码与响应正文中的状态码,只有HTTP状态码是200时,才表明这个接口请求是正确的,这个是HTTP协议定义的,而响应正文的状态码,是程序员自已定义的,能够是200,也能够定义为其它值,是为了让接口使用者去区分正常数据与异常数据。app


状态码与响应码不一致

2、POST请求

一、POST请求一:表单提交

先看下图POST表单提交示例:模块化


表单提交示例

上图示例中设置了请求方法,请求URL,请求参数,但没有设置请求头。有一个要明确的点是,请求头中的Content-Type与请求参数的格式之间是有关联关系的。函数


Content-Type与请求参数的格式之间的关联

当选择x-www-form-urlencoded的参数方式后,postman自动的帮咱们设置了Content-Type,因此不须要咱们人工干预,这就是使用一款流行工具的好处,把一些基础点都帮咱们处理了。工具

二、POST请求二:json提交

先看下图json提交示例:post


json提交示例

上图中,当咱们选择了JSON(application/json)时,postman一样帮咱们自动设置了Content-Type,能够自行的去查看Headers.学习

三、post请求三:xml提交

先看下图XML提交示例:


XML提交示例

上图中,当咱们选择了XML(text/xml)时,postman一样帮咱们自动设置了Content-Type,能够自行的去查看Headers.

四、post请求四:自行设置Content-Type

HTTP的POST请求的参数,都是放在请求正文中的,只是根据Content-Type来判断请求正文的格式,那么咱们一样能够在表单提交时,选择raw,而后自行设置Content-Type为application/x-www-form-urlencoded。


POST请求的参数

自行设置Content-Type

五、POST请求五:二进制文件提交

先看下图二进制文件示例:


二进制文件提交

Body下,选择binary,在这里你能够发送视频、音频、文本等文件。


3、postman断言

一个完整的接口测试,包括:请求->获取响应正文->断言,咱们已经知道了请求与获取响应正文,下面来介绍如何用postman进行断言。


Tests

这个”Tests”就是咱们须要处理断言的地方,postman很人性化的帮咱们把断言所用的函数全给准备好了:


SNIPPETS

举例说明:首先设置一个断言场景,根据断言场景来举例说明Postman断言如何使用。

一、判断HTTP返回状态码为200

二、判断响应正文中是否包含:"statusCode":200

三、解析响应正文,并判断statusCode的值是200,message的值是”Success”



第一步:在SNIPPETS中,往下拉,有一项”Status code:Code is 200”,这个就是为场景中的第 1 条准备的,判断HTTP返回状态码是否为200。点击这一项,能够看到在其左边,断言代码自动添加,见下图:


Status code

解释一下这句代码的意思:

tests["Status code is 200"]中的tests是一个内置对象,tests["Status code is 200"]是指为这个断言起个名称叫”Status code is 200”,这个名称能够自行修改。

responseCode.code === 200中的responseCode是内置对象,responseCode对象中有个属性是code,是指HTTP状态码的code,判断code是否为200.

综合起来,这句代码的意思是:名称为”Status code is 200”的断言中,判断responseCode对象的code属性值(HTTP状态码)是否为200。


第二步:一样在SNIPPETS中,找到一项”Response body:Contains string”,这个就是为场景中的第2条准备的,判断响应正文中的字段。点击后,在其左边,断言代码自动添加,见下图:


Contains string1

其中咱们须要修改想要在响应报文中找到的内容:

tests["Body matches string"] = responseBody.has('"statusCode":200');    //对照第2条场景:判断响应正文中是否包含:"statusCode":200


Contains string2

第三步:咱们须要解析JSON串了,因此,在SNIPPETS中找到”Response body:JSON value check”并点击,在其左边,断言代码自动添加,见下图:


JSON value check1

咱们能够看出,这里面实际上是JS代码,jsonData变量实际上是解析完JSON后的对象,在JS中,一个JSON对象获取其属性的值,直接是用jsonData.value,因而,咱们把代码给修改一下,来判断第3条场景:

tests["response statusCode"] = jsonData.statusCode === 200;  //判断statusCode的值是200

tests["response message"] = jsonData.message === 'Success';  //判断message的值是”Success”


JSON value check2

这样一来,咱们能够看到一共有Tests的断言4个,点击Send,发送请求,在响应区内能够看到以下图:表示断言所有经过。


以上,SNIPPETS中还有不少的函数提供给咱们,努力学习吧~~~


4、管理用例---Collections

Collections集合:也就是将多个接口请求能够放在一块儿,并管理起来。什么样的接口请求能够放在同一个collection里?

在这里告诉你们能够这样:一个工程一个Collection,这样方便查找及统一处理数据。

第一步:建立Collections

点击上图中的带+号的图标,输入Name:”demo”,Description:”demo for Collections”,点击Create按钮即建立成功一个Collections.


Create Collections

第二步,在Collections里添加请求

在右侧准备好接口请求的全部数据,并验证后,点击save按钮。


save按钮

选择Collection及填写好Request name、Request description后,点击右下角的save to collection按钮,则该请求被添加到Collection中。


save request

添加成功后,可在左侧列表中,collection中查看刚刚添加的请求。

第三步:Collection精细化---Folder

随着放入Collection的请求愈来愈多,混乱就又出现了,在找一个请求时,要找半天,因而将collection中的请求分门类别就很重要了,因而,在collection中就能够添加Folder了,将相同场景的请求放入同一个Folder中,因而就实现了模块化的管理了。

点击下图中的Add Folder后,便可建立Folder。


Add Folder按钮位置

添加上Folder name,即模块名称后,点击Create,建立成功一个Folder。


add Folder

接下来,只须要把相同场景的请求拖入相同的Folder便可,这样就实现了模块化的管理了。模块化之后的结构:


模块化的管理结构

第四步:运行Collection

将工程模块化的用例管理起来后,借着这个管理起来的东风,也能够将工程模块化的用例执行起来,即一次执行一整个collection里的用例,或者执行一个collection里的某一个Folder里的用例。

点击下图中的Run:


run

下图中的”Choose collection or folder”,若是选择demo,表示运行demo这一整个collection的用例,若是选择GET,即只运行demo下的GET模块下的用例。

Environment,即运行环境,是开发环境仍是测试环境,需事先配置,你们能够下去自已尝试一下。

Iterations,即重复运行次数。会将选择好的collection中folder重复运行。

Delay,间隔时间。用例与用例间的间隔时间。

Data,外部数据加载,即用例的参数化,能够与Iterations结合起来用,实现参数化,也就是数据驱动。

Run Demo,点击运行,运行完成后,便可得出一个简易的聚合报告。

第五步:Collection运行参数化

在Iterations重复运行时,若是某个用例但愿每次运行时,使用不一样的数据,那么应该知足以下2个条件:

一、脚本中要用到数据的地方参数化,即用一个变量来代替,每次运行时,从新获取当前的运行数据。

二、须要有一个数据池,这个数据池里的数据条数,要与重复运行的次数相同。


Postman的runner给咱们提供了Iterations的输入项,也提供了Data的文件选择项,也就是意味着数据池是一个外部文件。

若是Iterations里的值为2,那么,这个外部文件里也应该有两条数据,postman但愿咱们这个外部文件里的数据是一个json(固然也能够是其它

数据格式).

为了表示两条数据,这个json应该是一个list结构(以下图),同时,因为脚本要用到数据的地方须要参数化,须要变量,因此,每一条数据应该就是一个map,map的key对应脚本中的变量。


外部文件里的数据

上图中表示提供了一个msg的变量,每次运行对应不一样的值,预示着在脚本中能够用到msg这个变量,那在脚本中如何用?


使用变量

如上图断言中用data.msg,其中data是个内置对象,即表明每一次运行的那个map数据,因此,能够用data.msg来获取每次运行的对应的值,固然,因为是个map,也能够用data[‘msg’]来获取对应的值。


5、设置环境变量

有时须要在不一样的环境下跑相同的测试,此时能够经过设置环境变量来动态选择。点击右上角的设置按钮-Manage Environments:


Manage Environments

填写该环境的名称:如测试环境,并在key和value中填写须要的键值。


add1

add2

使用这些键值的时候只须要加上两个花括号引用key,例如: {{url_base}}/admin/offer/


引用key

创建多个环境时,key一般都是相同的,只是value不一样。建立好全部环境后,在跑用例的时候在右上角下拉列表选择须要的环境就能够了。


选择环境变量

6、身份验证Authentication

显示browser cookies,须要开启Interceptor。点击右上角的Interceptor 进行安装,并开启:


Interceptor

身份验证Authentication:

postman有一个helpers能够帮助咱们简化一些重复和复杂的任务。当前的一套helpers能够帮助你解决一些authentication protocols的问题。

一、Basic Auth

填写用户名和密码,点击update request后,headers中自动添加Authorization。图中用户名和密码均使用的key变量:


Basic Auth

二、Digest Auth

要比Basic Auth复杂的多。使用当前填写的值生成authorization header。因此在生成header以前要确保设置的正确性。若是当前的header已经存在,postman会移除以前的header。

三、OAuth 1.0

postman的OAuth helper让你签署支持OAuth

1.0基于身份验证的请求。OAuth不用获取access token,你须要去API提供者获取的。OAuth 1.0能够在header或者查询参数中设置value。

四、OAuth 2.0

postman支持得到OAuth 2.0 token并添加到requests中。



postman居然如此之强大!咱们还有什么理由去拒绝?介绍完以后,可能新的问题又来了,如何与jenkins结合实现持续集成?

因此,产生了个newman,是个命令行运行postman请求的工具,建议你们自行去研究下,由于那确实就只是个命令行的工具而已!

 

提供参考连接:https://www.jellythink.com/archives/category/tool-tutorials/postman

相关文章
相关标签/搜索