Postman使用和详解资料_第1页
Postman使用和详解资料_第2页
Postman使用和详解资料_第3页
Postman使用和详解资料_第4页
Postman使用和详解资料_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Postman使用详解

前百:

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

接口请求流程

一、get请求

GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上,所以,GET请求的

请求头与请求参数如在接口文档中无特别声明时,可以不填。

GET7hnps^//;id»3&name»jackParams

KeyValueDescription

三S3id3

Qnamejack

AuihorizarionHeadersPre-requestScriptTests

KeyValueDescription•••BulkEdit

get请求示例

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

BodyCookiesHeaders(17)TestResults

PrettyRawPreviewHTML~E5

<!DOCTYPEhtml>

2<!--STATUS0K-->

3▼<html>

4-<head>

5<metahttp-equiv="content-type"content="text/html;charset=utf-8">

6<metahttp-equiv="X-UA-Compatible"content='*IE=Edge">

7<metacontent»Mal?jaysnname="re-ferrer">

8<metanafne="tneme-color"content=T2932el">

9<linkrel=nshortcuticon"hrefdvicon.ico"type=',irr.age/x-icon"/>

10<linkrel=nsea-'Ch"type="application/opensearchOescription*xinl'href="/content-search

11<linkrel="icon"sizes="any"maskhref="//ww/img/baidu.svg">

12<linkrel=Mdns-prefetch"hrefs^Z/sl.D"/>

13<linkrel«*,dns-prefetch"href«"//tl.baidu.com**/>

14<linkrel=Mdns-prefetch',href=,7/t2.baidu.coni,7>

15<linkrel=Mdns-prefetch,,href='7/"/>

16<linkrel="dns-prefetch"href="//tl0.baidu.com"/>

17<linkrel=Rdns-prefetch"href='7/tll.baidu.com'V>

18<linkrel=Mdns-prefetch"href='7/"7>

19<linkrel="dns-prefetch"href-'7/bl.bdstatic.com"/>

20〈title〉百度一下,你就知道"title〉

21▼<styleid="css_index-index-^index"type=°text/css">html,body(neight

get响应示例

需特别注意的是注意区别HTTP状态码与响应正文中的状态码,只有HTTP状态码是200时,才代表这个

接口请求是正确的,这个是HTTP协议定义的,而响应正文的状态码,是程序员自己定义的,可以是200,

也可以定义为其它值,处为了让接口使用者去区分正常数据与异常数据。

BodyCookiesHeaders(4)Tests(1/4)

PrettyRawPreviewJSON7=|

⑥布•茶馔

状态码与响应码不•致

二、POST请求

LPOST请求一:表单提交

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

POSTv/Params

AuthorizationHeaders(1)Body•Pre-requestScriptTesis

form-data•x-www-form-urlencodedrawbinary

Description

表单提交示例

上图示例中设置了请求方法,请求URL,请求参数,但没有设置请求头。有一个要明确的点是,请求头中

的Content-Type与请求参数的格式之间是有关联关系的。

POST参数格式Content-Type参数示例

表单提交application/x-www-form-ur1encodedusername=jack&password=l23

rffait・、aacc"1

JSON提交application/jsonIusername:jack,password:123)

<?xmlversion=x,l.0"encoding=,utf-8,7

<book>

XML提交text/xml

<乜[18>戮媛传<八仙1&>

</book>

-----------------------------------

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

当选择x-www-form-urlencoded的参数方式后,postman自动的帮我们设置fContent-Type,所以

不需要我们人工干预,这就是使用一款流行工具的好处,把一些基础点都帮我们处理了。

2.POST请求二:json提交

先看下图json提交示例:

POST7hcrps:///P

AbzhofizatiorHeaders(1)Body•-re-requestSop:Tesrs

form-datax-www-form-urlencoded•rawbinaryJSON(applicaoon/json)v

1{"username":'*jack","password":"123-)|

json提交示例

上图中,当我们选择了JSON(application/json)时,postman同样帮我们自动设苴了Content-Type,

可以自行的去查看Headers.

3.post请求三:xml提交

先看下图XML提交示例:

POST7hnps:///

Headers(1)Body•Pre-requestScript

form-datax-wviw-form-urlencoded•rawbinaryXMLxz

1<?xmlversion="1.0"encoding="utf-8,,?>

2-<book>

3氮端传

4</book>

5

6

7

8

XML提交示例

上图中,当我们选择了XML(text/xml)时,postman同样帮我们自动设置了Content-Type,可以自行

的去查看Headers.

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

HTTP的POST请求的参数,都是放在请求正文中的,只是根据Content-Type来判断请求正文的格式,

那么我们同样可以在表单提交时,选择raw,然后自行设置Content-Type为

application/x-www-form-urlencoded.

POST〜hnps7//

Body•

form-datax-vAf/w-form-urlencoded•rawbinaryText、

username=jack&password=123

2____________________________

3

4

POST请求的参数

POSTvhctps:///P

AuthorizationHeaders(1)Body•Pre-t■equestScriptTests

ValueDescrip

QContent-Typeapplicadon/x-www-form-urlencoded

自行设置Content-Type

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

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

POSTvhttps://www.baidu.coE/P

AuthorizatjonHeaders(1)BodyPre-requestScriptTests

form-da:ax-wv/w-form-urlencodedraw•binary

选择文件rarchupdazeofferremplare-changeAPl.xlsx

二进制文件提交

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

三、postman断言

一个完整的接口测试,包括:清求->获取响应正文->断言,我们已经知道「请求与获取响应正文,下面来

介绍如何用postman进行断言。

Nc

https7/www.baidu.co•+•••

POSTvhnps^//Pi

AuthorizationHeaders⑴BodyPre-requestScriptTests

Tests

这个“Tests,,就是我们需要处理断言的地方,postman很人性化的帮我们把断言所用的函数全给准备好

了:

AuthorizationHeaders⑴BodyPre-requestScriptTests

Tesrscriptsarewr;nernJavaScript.

runa^ertheresponseisreceived.

Learnmoreabouttests

SfMIWETS

Clearaglobalvariabre

Clearanenvironmentvariable

Responsebody:Containsstring

Responsebody:ConvertXMLbodytc

Object

Responsebody:»sequaltoastring

Responseoody:jSONvaluecheck

Responseheaders:Con:ent'Typehea

Response

SNIPPETS

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

1.判断HTTP返网状态码为200

2.判断响应正文中是否包含:"statusCode":200

3,解析响应正文,并判断statusCode的值是200,message的值是“SuccessM

第一步:在SNIPPETS中,往下拉,有一项"Statuscode:Codeis200”,这个就是为场景中的第1条

准备的,判断HTTP返回状态码是否为200。点击这一项,可以看到在其左边,断言代码自动添加I,见下

图:

AuthorizationHeaders(1)BodPre-requestSTests•

1tests["Statuscodeis200"]=responseCode.code===200;Testscriptsa-ewirternJavaScript.

2runa^tertheresponsesreceived.

Learnmoreaboutteszs

SNIPS=TS

Responsetimeislessthan200ms

Setaglobalvanable

5etanenvironmentvariable

Statuscode:Codeis200

Statuscode:Codenamehasstring

Statuscode:SuccesfulPOSTrequest

UseTinyValidatorforJSOKdata

Statuscode

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

tests["Statuscodeis200']中的tests是一个内置对象,tests["Statuscodeis200"]是指为这个断

言起个名称叫“Statuscodeis200w,这个名称可以自行修改,

responseCode.code===200中的responseCode是内置对象,responsecode对象中有个属性是

code,是指HTTP状态码的code,判断code是否为200.

综合起来,这句代码的意思是:名称为“Statuscodeis200”的断言中,判断responseCode对象的

code属性值(HTTP状态码)是否为200。

第:步:同样在SNIPPETS中,找到一项“Responsebody:Containsstring",这个就是为场景中的

第2条准备的,判断响应正文中的字段。点击后,在其左边,断言代码自动添加,见下图:

AuthorizationHeaders(1)BodyPre-requestScr甲tTests•

.tests["Statjscodeis200"]=responseCode.code===200;TestscriptsarewrirternJa/aScrip:

2rura^errheresponseisreceived.

3

4testsTdt:hesstring"]=responseBodi,.hasLearnmoreaboutrests

("string^oj.want.to.search");

5SNPPETS

Clearaglobalvanable

Clearanen\nronmentvariable

Responsebody:Containsstring

Responsebody:ConvertXMLbody

Obect

Responsebody:Isequaltoastring

Responsebody:jSONvaluecheck

Responseheaders:Content-Typeh(

Containsstringl

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

tests["Bodymatchesstring"]=responseBody.has("'statusCode',:200');〃对照第2条场景:

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

AuthorizationHeaders(1)BodyPre-requestScriptTests•

1testsfStatuscodeis200"]=responseCode.code===200;

2

3

4tests["Bodymatchesstring"]=responseBod>z.has('"statusCode":200');

5

碑廊,螂

Containsstring2

第三步:我们需要解析JSON串了,所以,在SNIPPETS中找至「Responsebody:JSONvaluecheck”

并点击,在其左边,断言代码自动添加,见下图:

AuthorizationHeaders(1)BodyPre-requestScriptTests•

1te5ts["Statuscedeis200"]=responseCode.code===200;

2

3

tests["Bodymatchesstring"]=responseBody.has('"statusCode":200');

5|

6

7varjsonData=J5(X4.parse(response8ody);

8tests["Yourtestname"]=jsonData.value===100;

JSONvaluecheckl

我们可以看出,这里面其实是JS代码,jsonData变量其实是解析完JSON后的对象,在JS中,•个

JSON对象获取其属性的他直接是用jsonData.value,于是,我们把代码给修改一卜,来判断第3条场

景:

tests["responsestatusCode"]=jsonData.statusCode===200;〃判断statusCode的值是

200

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

是“Success”

Authorizatio-Headers(1)BodyPre-requestScnptTests•

1tests["Statuscodeis200"]=responseCode.code===200;

2

3

-tests["Bodymatchesstring"]=responseBody.has(""statusCode":200');

5

6

7va-jsonData=DSC^J.parse(responseBody);

8testsfresponsestatusCode"]=jsonData.statusCode===200;

9tests["responsemessage"]=jsonData.message==='Success';

JSONvaluecheck2

这样一来,我们可以看到一共有Tests的断言4个,点击Send,发送请求,在响应区内可以看到如下图:

表示断言全部通过。

BodyCookiesHeaders(4)Tests(4/4)Status200OKTime12ms

PASSStatuscodeis200

PASSresponsebodycontains

PASSresponsestatusCode

PASSresponsemessage

以上,SNIPPETS中还有很多的函数提供给我们,努力学习吧----

四、管理用例一Collections

Collections集合:也就是将多个接口请求可以放在一起,并管理起来。什么样的接口请求可以放在同一个

collection里?

在这里告诉大家可以这样:一个工程一个Collection,这样方便查找及统一处理数据。

HistoryCollections

AllMeTeam(^,*

.-papayatest★

7requests

PostmanEcho

37requests

第一步:创建Collections

点击上图中的带十号的图标,输入Name:"demo",Description:"demoforCollections",点击C-eate

按钮即创建成功一个Collections.

CREATEANEWCOLLECTIONX

Name

demo

Description

demoforcollection!

CancelCreate

,妙斯•嫩阻

CreateCollections

第二步,在Collections里添加请求

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

POST〜haps:〃www.baidu.coE/Params

AuthorizationHeaders⑴Body•Pre-requestScriptTests•

form-data•x-wv^w-form-urlencodedrawbinary

ValueDescription

nameJack

save按钮

选择Collection及填写好Requestname.Requestdescription后,点击右下角的savetocollection

按钮,则该请求被添加到Collection中。

SAVEREQUESTX

RequestsinPostmanaresavedincollections(agroupofrequests).

Learnmoreaboutcreatingcollections

Requestname

/|

Requestdescription(Optional)

Selectacollectionorfoldertosaveto:

Cancel

漱林、舞演

saverequest

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

HistoryCollections

AllMeTean-

papayatest★

7requests

demo

1request

hctps^//

PostmanEcho

37requests

第三步:Collection精细化一Folder

随着放入Collection的请求越来越多,混乱就又出现了,在找一个请求时,要找半天,丁•是将collection

中的请求分门类别就很重要了,于是,在collection中就可以添加Folder了,将相同场景的请求放入同一

个Folder中,于是就实现了模块化的管理了。

点击下图中的AddFolder后,即可创建Folder。

demo☆

1request

ROSThttps^/www.tVShareCollection

PostmanEchAIRename

37requests/Edjt

C?+AddFolder

后DuplicateCtrf+D

±Export

-V-MonitorCollection

OMockCollection

国PublishDocs

■DeleteDel

靳怆、轴瓶

AddFolder按钮位置

添力口上Foldername,即模块名称后,点击Create,创建成功•个Folder。

ADDFOLDERTODEMOX

Name

GET

Description

Addingadescriptionnakesyourdocsbetter

Create

勒斯,辩辨

addFolder

接下来,只需要把相同场景的请求拖入相同的Folder即可,这样就实现「模块化的管理广。模块化以后的

结构:

demo

4requesrs

GET

6ET/

GEThrtps7//•••

POST•••

POST/

POST/

题箱、第微

模块化的管理结构

第四步:运行Collection

将工程模块化的用例管理起来后,借着这个管理起来的东风,也可以将工程模块化的用例执行起来,即一

次执行一整个collection里的用例,或者执行一个collection里的某一个Folder里的用例。

点击下图中的Run:

demoX

HistoryCollectionsLas:Zod:*ed5rrrsago

OwnerYou

AilMeTeam

•••

papayatest★

7requests

DocumentationMonitorsMocksActivity

demo☆

19Leamhowtodocumentyourrequests

4requests

P~lGET

demoforcollection

r~iPOST

CoGET

PostmanEcho

37requestsr~iPOST

下图中的“Choosecollectionorfolder",如果选择demo,表示运行demo这•整个collection的用

例,如果选择GET,即只运行dem。下的GET模块下的用例。

Environment,即运行环境,走开发环境还处测试环境,需事先配置,大家可以下去自己尝试一下。

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

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

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

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

Runs

CURRENTRUN

EnvironmentNoenvironmentxz

Rundemo

第五步:Collection运行参数化

在Iterations重复运行时,如果某个用例希望每次运行时,使用不同的数据,那么应该满足如下2个条件:

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

2、需要有•个数据池,这个数据池里的数据条数,要与重复运行的次数相同。

Postman的runner给我们提供了Iterations的输入项,也提供了Data的文件选择项,也就是意味着数

据池是一个外部文件。

如果Iterations里的值为2,那么,这个外部文件里也应该有两条数据,postman希望我们这个外部文件

里的数据是一个json(当然也可以是其它

数据格式).

为了表示两条数据,这个json应该是一个list结构(如卜图),同时,由于脚本要用到数据的地方需要参数

化,需要变量,所以,每一•条数据应该就是一个map,map的key对应脚本中的变量。

[

!(

msg:Success.

|},

I(

"code":"200”

]

砌席,娜淮

外部文件里的数据

上图中表示提供了•个msg的变量,每次运行对应不同的值,预示着在脚本中可以用到msg这个变量,

那在脚本中如何用?

AuthorizationHeaders⑴Body•^e-requestScriptTests•

1tests["Statuscodeis200"]=responseCode.code===200;

2

3

4tests["Bodymotchesstring"]-responseDody.has('"statusCode,':200');

5

6

7vanjsonData=3S0N.parse(responseBody);-----------------------

8tests["responsestatusCode"]=jsonData.statusCoqe==』data.code;

9tests[wre5ponsemessage*']=jsonData.message===Idata.msg;

10---------------------------------------------------------------------------------------------------

11的斯•般漫

使用变量

如上图断言中用data.msg,其中data是个内置对象,即代表每一次运行的那个map数据,所以,可以

用data.msg来获取每次运行的对应的值,当然,由于是个map,也可以用data['msg']来获取对应

的值。

五、设置环境变量

行时需要在不同的环境下跑相同的测试,此时可以通过设置环境变量来动态选择。点击右上角的设置按钮

-ManageEnvironments:

aff_pre7o||

ManageEnvironments

SharedEnvironments

ParamsSendSave

Code

ManageEnvironments

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

MANAGEENVIRONMENTS

ManageEnvironmentsEn.iformen.

Environmentsareagroupofvariables&values,thatallowyoutoquicklyswitchdiecontextforyourrequestsand

collections.

Learnmoreaboutenvironments

aff_official

aff_pre

aff_pre1

aff_pre2

Globalsimport

addl

MANAGEENVIRONMENTS

ManageEnvironmentsE-onenz7empla:es

category_name_

Qam_id80

QemailL:琴

Qpassword123456

groupJd1

Qgroup_name

QAddCreativeFi!es_offer!D3

Update

獭R.

add2

使用这些键位的时候只需要加上两个花括号引用k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论