版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程造价考试题库及答案解析
- 塑料加工艺实施工程师面试问题集
- 腾讯IT工程师面试题及解析
- 2025年人工智能客户服务系统研发项目可行性研究报告
- 2025年农产品区块链追溯系统可行性研究报告
- 2025年自助服务技术在零售的应用可行性研究报告
- 2025年企业ESG报告自动生成系统可行性研究报告
- 2025年生态修复与环境治理项目可行性研究报告
- 2025年区域性物流园区建设可行性研究报告
- 2025年未来出行综合服务平台项目可行性研究报告
- 2026年关于护士长工作计划4篇
- 2025至2030全球及中国手机用锂离子电池行业调研及市场前景预测评估报告
- 甘肃省定西市2023-2024学年八年级上学期数学期末考试试卷(含答案)
- 《单晶硅制备技术》课件-单晶炉水冷系统
- 人工气道气囊管理2026
- 自助机器加盟协议书
- 少年有志歌词
- 2025年一级建造师《水利水电》真题及答案解析
- 第16课《诫子书》复习要点及高频考点-2025-2026学年统编版语文七年级上册
- EGFR突变肺癌的靶向治疗耐药及应对策略
- 急诊科临床技术操作规范和临床诊疗指南
评论
0/150
提交评论