Postman使用和詳解資料_第1頁
Postman使用和詳解資料_第2頁
Postman使用和詳解資料_第3頁
Postman使用和詳解資料_第4頁
Postman使用和詳解資料_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Postman使用詳解

前百:

Postman是一款功能強(qiáng)大的網(wǎng)頁調(diào)試與發(fā)送網(wǎng)頁HTTP請(qǐng)求的Chrome插件。

接口請(qǐng)求流程

一、get請(qǐng)求

GET請(qǐng)求:點(diǎn)擊Params,輸入?yún)?shù)及value,可輸入多個(gè),即時(shí)顯示在URL鏈接上,所以,GET請(qǐng)求的

請(qǐng)求頭與請(qǐng)求參數(shù)如在接口文檔中無特別聲明時(shí),可以不填。

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

KeyValueDescription

三S3id3

Qnamejack

AuihorizarionHeadersPre-requestScriptTests

KeyValueDescription???BulkEdit

get請(qǐng)求示例

GET響應(yīng):右上角顯示響應(yīng)HTTP狀態(tài)碼、請(qǐng)求的耗時(shí)。

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="http://ww/img/baidu.svg">

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

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

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

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

16<linkrel="dns-prefetch"/>

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響應(yīng)示例

需特別注意的是注意區(qū)別HTTP狀態(tài)碼與響應(yīng)正文中的狀態(tài)碼,只有HTTP狀態(tài)碼是200時(shí),才代表這個(gè)

接口請(qǐng)求是正確的,這個(gè)是HTTP協(xié)議定義的,而響應(yīng)正文的狀態(tài)碼,是程序員自己定義的,可以是200,

也可以定義為其它值,處為了讓接口使用者去區(qū)分正常數(shù)據(jù)與異常數(shù)據(jù)。

BodyCookiesHeaders(4)Tests(1/4)

PrettyRawPreviewJSON7=|

⑥布?茶饌

狀態(tài)碼與響應(yīng)碼不?致

二、POST請(qǐng)求

LPOST請(qǐng)求一:表單提交

先看下圖POST表單提交示例:

POSTv/Params

AuthorizationHeaders(1)Body?Pre-requestScriptTesis

form-data?x-www-form-urlencodedrawbinary

Description

表單提交示例

上圖示例中設(shè)置了請(qǐng)求方法,請(qǐng)求URL,請(qǐng)求參數(shù),但沒有設(shè)置請(qǐng)求頭。有一個(gè)要明確的點(diǎn)是,請(qǐng)求頭中

的Content-Type與請(qǐng)求參數(shù)的格式之間是有關(guān)聯(lián)關(guān)系的。

POST參數(shù)格式Content-Type參數(shù)示例

表單提交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與請(qǐng)求參數(shù)的格式之間的關(guān)聯(lián)

當(dāng)選擇x-www-form-urlencoded的參數(shù)方式后,postman自動(dòng)的幫我們?cè)O(shè)置fContent-Type,所以

不需要我們?nèi)斯じ深A(yù),這就是使用一款流行工具的好處,把一些基礎(chǔ)點(diǎn)都幫我們處理了。

2.POST請(qǐng)求二: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提交示例

上圖中,當(dāng)我們選擇了JSON(application/json)時(shí),postman同樣幫我們自動(dòng)設(shè)苴了Content-Type,

可以自行的去查看Headers.

3.post請(qǐng)求三: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提交示例

上圖中,當(dāng)我們選擇了XML(text/xml)時(shí),postman同樣幫我們自動(dòng)設(shè)置了Content-Type,可以自行

的去查看Headers.

4.post請(qǐng)求四:自行設(shè)置Content-Type

HTTP的POST請(qǐng)求的參數(shù),都是放在請(qǐng)求正文中的,只是根據(jù)Content-Type來判斷請(qǐng)求正文的格式,

那么我們同樣可以在表單提交時(shí),選擇raw,然后自行設(shè)置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請(qǐng)求的參數(shù)

POSTvhctps:///P

AuthorizationHeaders(1)Body?Pre-t■equestScriptTests

ValueDescrip

QContent-Typeapplicadon/x-www-form-urlencoded

自行設(shè)置Content-Type

5.POST請(qǐng)求五:二進(jìn)制文件提交

先看下圖二進(jìn)制文件示例:

POSTvhttps://www.baidu.coE/P

AuthorizatjonHeaders(1)BodyPre-requestScriptTests

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

選擇文件rarchupdazeofferremplare-changeAPl.xlsx

二進(jìn)制文件提交

Body下,選擇binary,在這里你可以發(fā)送視頻、音頻、文本等文件。

三、postman斷言

一個(gè)完整的接口測試,包括:清求->獲取響應(yīng)正文->斷言,我們已經(jīng)知道「請(qǐng)求與獲取響應(yīng)正文,下面來

介紹如何用postman進(jìn)行斷言。

Nc

https7/www.baidu.co?+???

POSTvhnps^//Pi

AuthorizationHeaders⑴BodyPre-requestScriptTests

Tests

這個(gè)“Tests,,就是我們需要處理斷言的地方,postman很人性化的幫我們把斷言所用的函數(shù)全給準(zhǔn)備好

了:

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

舉例說明:首先設(shè)置一個(gè)斷言場景,根據(jù)斷言場景來舉例說明Postman斷言如何使用。

1.判斷HTTP返網(wǎng)狀態(tài)碼為200

2.判斷響應(yīng)正文中是否包含:"statusCode":200

3,解析響應(yīng)正文,并判斷statusCode的值是200,message的值是“SuccessM

第一步:在SNIPPETS中,往下拉,有一項(xiàng)"Statuscode:Codeis200”,這個(gè)就是為場景中的第1條

準(zhǔn)備的,判斷HTTP返回狀態(tài)碼是否為200。點(diǎn)擊這一項(xiàng),可以看到在其左邊,斷言代碼自動(dòng)添加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是一個(gè)內(nèi)置對(duì)象,tests["Statuscodeis200"]是指為這個(gè)斷

言起個(gè)名稱叫“Statuscodeis200w,這個(gè)名稱可以自行修改,

responseCode.code===200中的responseCode是內(nèi)置對(duì)象,responsecode對(duì)象中有個(gè)屬性是

code,是指HTTP狀態(tài)碼的code,判斷code是否為200.

綜合起來,這句代碼的意思是:名稱為“Statuscodeis200”的斷言中,判斷responseCode對(duì)象的

code屬性值(HTTP狀態(tài)碼)是否為200。

第:步:同樣在SNIPPETS中,找到一項(xiàng)“Responsebody:Containsstring",這個(gè)就是為場景中的

第2條準(zhǔn)備的,判斷響應(yīng)正文中的字段。點(diǎn)擊后,在其左邊,斷言代碼自動(dòng)添加,見下圖:

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

其中我們需要修改想要在響應(yīng)報(bào)文中找到的內(nèi)容:

tests["Bodymatchesstring"]=responseBody.has("'statusCode',:200');〃對(duì)照第2條場景:

判斷響應(yīng)正文中是否包含:"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”

并點(diǎn)擊,在其左邊,斷言代碼自動(dòng)添加,見下圖:

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

我們可以看出,這里面其實(shí)是JS代碼,jsonData變量其實(shí)是解析完JSON后的對(duì)象,在JS中,?個(gè)

JSON對(duì)象獲取其屬性的他直接是用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個(gè),點(diǎn)擊Send,發(fā)送請(qǐng)求,在響應(yīng)區(qū)內(nèi)可以看到如下圖:

表示斷言全部通過。

BodyCookiesHeaders(4)Tests(4/4)Status200OKTime12ms

PASSStatuscodeis200

PASSresponsebodycontains

PASSresponsestatusCode

PASSresponsemessage

以上,SNIPPETS中還有很多的函數(shù)提供給我們,努力學(xué)習(xí)吧----

四、管理用例一Collections

Collections集合:也就是將多個(gè)接口請(qǐng)求可以放在一起,并管理起來。什么樣的接口請(qǐng)求可以放在同一個(gè)

collection里?

在這里告訴大家可以這樣:一個(gè)工程一個(gè)Collection,這樣方便查找及統(tǒng)一處理數(shù)據(jù)。

HistoryCollections

AllMeTeam(^,*

.-papayatest★

7requests

PostmanEcho

37requests

第一步:創(chuàng)建Collections

點(diǎn)擊上圖中的帶十號(hào)的圖標(biāo),輸入Name:"demo",Description:"demoforCollections",點(diǎn)擊C-eate

按鈕即創(chuàng)建成功一個(gè)Collections.

CREATEANEWCOLLECTIONX

Name

demo

Description

demoforcollection!

CancelCreate

,妙斯?嫩阻

CreateCollections

第二步,在Collections里添加請(qǐng)求

在右側(cè)準(zhǔn)備好接口請(qǐng)求的所有數(shù)據(jù),并驗(yàn)證后,點(diǎn)擊save按鈕。

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

AuthorizationHeaders⑴Body?Pre-requestScriptTests?

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

ValueDescription

nameJack

save按鈕

選擇Collection及填寫好Requestname.Requestdescription后,點(diǎn)擊右下角的savetocollection

按鈕,則該請(qǐng)求被添加到Collection中。

SAVEREQUESTX

RequestsinPostmanaresavedincollections(agroupofrequests).

Learnmoreaboutcreatingcollections

Requestname

/|

Requestdescription(Optional)

Selectacollectionorfoldertosaveto:

Cancel

漱林、舞演

saverequest

添加成功后,可在左側(cè)列表中,collection中查看剛剛添加的請(qǐng)求。

HistoryCollections

AllMeTean-

papayatest★

7requests

demo

1request

hctps^//

PostmanEcho

37requests

第三步:Collection精細(xì)化一Folder

隨著放入Collection的請(qǐng)求越來越多,混亂就又出現(xiàn)了,在找一個(gè)請(qǐng)求時(shí),要找半天,丁?是將collection

中的請(qǐng)求分門類別就很重要了,于是,在collection中就可以添加Folder了,將相同場景的請(qǐng)求放入同一

個(gè)Folder中,于是就實(shí)現(xiàn)了模塊化的管理了。

點(diǎn)擊下圖中的AddFolder后,即可創(chuàng)建Folder。

demo☆

1request

ROSThttps^/www.tVShareCollection

PostmanEchAIRename

37requests/Edjt

C?+AddFolder

后DuplicateCtrf+D

±Export

-V-MonitorCollection

OMockCollection

國PublishDocs

■DeleteDel

靳愴、軸瓶

AddFolder按鈕位置

添力口上Foldername,即模塊名稱后,點(diǎn)擊Create,創(chuàng)建成功?個(gè)Folder。

ADDFOLDERTODEMOX

Name

GET

Description

Addingadescriptionnakesyourdocsbetter

Create

勒斯,辯辨

addFolder

接下來,只需要把相同場景的請(qǐng)求拖入相同的Folder即可,這樣就實(shí)現(xiàn)「模塊化的管理廣。模塊化以后的

結(jié)構(gòu):

demo

4requesrs

GET

6ET/

GEThrtps7//???

POST???

POST/

POST/

題箱、第微

模塊化的管理結(jié)構(gòu)

第四步:運(yùn)行Collection

將工程模塊化的用例管理起來后,借著這個(gè)管理起來的東風(fēng),也可以將工程模塊化的用例執(zhí)行起來,即一

次執(zhí)行一整個(gè)collection里的用例,或者執(zhí)行一個(gè)collection里的某一個(gè)Folder里的用例。

點(diǎn)擊下圖中的Run:

demoX

HistoryCollectionsLas:Zod:*ed5rrrsago

OwnerYou

AilMeTeam

???

papayatest★

7requests

DocumentationMonitorsMocksActivity

demo☆

19Leamhowtodocumentyourrequests

4requests

P~lGET

demoforcollection

r~iPOST

CoGET

PostmanEcho

37requestsr~iPOST

下圖中的“Choosecollectionorfolder",如果選擇demo,表示運(yùn)行demo這?整個(gè)collection的用

例,如果選擇GET,即只運(yùn)行dem。下的GET模塊下的用例。

Environment,即運(yùn)行環(huán)境,走開發(fā)環(huán)境還處測試環(huán)境,需事先配置,大家可以下去自己嘗試一下。

Iterations,即重復(fù)運(yùn)行次數(shù),會(huì)將選擇好的collection中folder重復(fù)運(yùn)行。

Delay,間隔時(shí)間。用例與用例間的間隔時(shí)間。

Data,外部數(shù)據(jù)加載,即用例的參數(shù)化,可以與Iterations結(jié)合起來用,實(shí)現(xiàn)參數(shù)化,也就是數(shù)據(jù)驅(qū)動(dòng)。

RunDemo,點(diǎn)擊運(yùn)行,運(yùn)行完成后,即可得出一個(gè)簡易的聚合報(bào)告。

Runs

CURRENTRUN

EnvironmentNoenvironmentxz

Rundemo

第五步:Collection運(yùn)行參數(shù)化

在Iterations重復(fù)運(yùn)行時(shí),如果某個(gè)用例希望每次運(yùn)行時(shí),使用不同的數(shù)據(jù),那么應(yīng)該滿足如下2個(gè)條件:

1、腳本中要用到數(shù)據(jù)的地方參數(shù)化,即用一個(gè)變量來代替,每次運(yùn)行時(shí),重新獲取當(dāng)前的運(yùn)行數(shù)據(jù)。

2、需要有?個(gè)數(shù)據(jù)池,這個(gè)數(shù)據(jù)池里的數(shù)據(jù)條數(shù),要與重復(fù)運(yùn)行的次數(shù)相同。

Postman的runner給我們提供了Iterations的輸入項(xiàng),也提供了Data的文件選擇項(xiàng),也就是意味著數(shù)

據(jù)池是一個(gè)外部文件。

如果Iterations里的值為2,那么,這個(gè)外部文件里也應(yīng)該有兩條數(shù)據(jù),postman希望我們這個(gè)外部文件

里的數(shù)據(jù)是一個(gè)json(當(dāng)然也可以是其它

數(shù)據(jù)格式).

為了表示兩條數(shù)據(jù),這個(gè)json應(yīng)該是一個(gè)list結(jié)構(gòu)(如卜圖),同時(shí),由于腳本要用到數(shù)據(jù)的地方需要參數(shù)

化,需要變量,所以,每一?條數(shù)據(jù)應(yīng)該就是一個(gè)map,map的key對(duì)應(yīng)腳本中的變量。

[

!(

msg:Success.

|},

I(

"code":"200”

]

砌席,娜淮

外部文件里的數(shù)據(jù)

上圖中表示提供了?個(gè)msg的變量,每次運(yùn)行對(duì)應(yīng)不同的值,預(yù)示著在腳本中可以用到msg這個(gè)變量,

那在腳本中如何用?

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是個(gè)內(nèi)置對(duì)象,即代表每一次運(yùn)行的那個(gè)map數(shù)據(jù),所以,可以

用data.msg來獲取每次運(yùn)行的對(duì)應(yīng)的值,當(dāng)然,由于是個(gè)map,也可以用data['msg']來獲取對(duì)應(yīng)

的值。

五、設(shè)置環(huán)境變量

行時(shí)需要在不同的環(huán)境下跑相同的測試,此時(shí)可以通過設(shè)置環(huán)境變量來動(dòng)態(tài)選擇。點(diǎn)擊右上角的設(shè)置按鈕

-ManageEnvironments:

aff_pre7o||

ManageEnvironments

SharedEnvironments

ParamsSendSave

Code

ManageEnvironments

填寫該環(huán)境的名稱:如測試環(huán)境,并在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

使用這些鍵位的時(shí)候只需要加上兩個(gè)花括號(hào)引用k

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論