一伶椿、?? 安裝與更新
1、安裝的方式
方式1:chrome插件版本:chrome--->設(shè)置--->擴展程序;
方式2:native版本(具有更好的擴展性届腐,推薦使用):https://www.getpostman.com/
2适篙、Chrome app和native app的區(qū)別
1往核、Cookies(登錄):native版本可以直接操作cookie,而chrome版本需要安裝擴展嚷节;
2聂儒、Built-in proxy(代理):native版本自帶proxy,可以用來抓包硫痰;
3衩婚、Menu bar(菜單欄):chrome沒有帶菜單欄,而native自帶菜單欄效斑;
4非春、Restricted headers(受限headers):有一些headers在chrome app上是受限的,比如Origin and User-Agent缓屠;
5奇昙、Don‘t follow redirects option(不去跟隨重定向):native版本才有這個選項;
6敌完、Postman console:native版本自帶储耐;
3、native app更新
步驟:File--->Settings--->Update--->Minor fixes
二滨溉、?? 發(fā)送一個api請求
文檔:https://www.v2ex.com/p/7v9TEc53
api地址:https://www.v2ex.com/api/topics/hot.json
三什湘、?? 模擬HTTP Requests
1长赞、請求Request
URL
Method:根據(jù)方法的不同,body編輯器會變化闽撤;
Headers
body:form-data:①涧卵、網(wǎng)頁表單用來傳輸數(shù)據(jù)的默認格式,可以模擬填寫表單腹尖,并且提交表單柳恐;②、可以上傳一個文件作為key的value提交(如上傳文件)热幔,但該文件不會作為歷史保存乐设,只能在每次需要發(fā)送請求的時候,重新添加绎巨;
?????x-www-urlencodedl:①近尚、urlencode中的key-value會寫入URL,from-data模式的key-value不明顯寫入URL场勤,而是直接提交戈锻;②、這個編碼格式不能上傳文件和媳;
?????raw:可以包含任何東西格遭,所有填寫的text都會隨著請求發(fā)送json/字符串;
?????binary:也不能保存歷史留瞳,每次選擇文件拒迅,提交;
選擇參數(shù)方式后她倘,postman自動的幫我們設(shè)置Content-Type璧微;
Pre-request Script:請求發(fā)送前,可進行一些腳本設(shè)置硬梁,如前硫,設(shè)置或清除參數(shù)、變量荧止;
Tests:定義發(fā)送Request之后屹电,需要用腳本檢測的內(nèi)容,也就是Test case的內(nèi)容罩息;
2嗤详、響應(yīng)Response
Body:Pretty:①、格式化了JSON和XML瓷炮,方便查看葱色,點擊里面的URL,postman會創(chuàng)建一個request娘香;②苍狰、json办龄、HTML、XML淋昭、Text等俐填;
Raw:text;
preview:格式化了JSON和XML翔忽,方便查看英融;
?四、?? 權(quán)限Authorization
Basic Auth:填寫用戶名和密碼歇式,點擊Update Requests驶悟;
Digest Auth:要比Basic Auth復(fù)雜的多,使用當前填寫的值生成authorization header材失,所以在生成header之前要確保設(shè)置的正確性痕鳍,如果當前的header已經(jīng)存在,postman會移除之前的header龙巨;
OAuth 1.0a:讓你簽署支持OAuth1.0基于身份驗證的請求笼呆,OAuth不用獲取access token,你需要去API提供者獲取的旨别,OAuth1.0可以在header或者查詢參數(shù)中設(shè)置value诗赌;
OAuth2.0:支持獲得OAuth2.0 token并添加到request中;
五昼榛、?? 斷言Writing Test
設(shè)置全局變量境肾;
設(shè)置環(huán)境變量;
拿到并處理請求的響應(yīng)胆屿;
定義測試檢查點和斷言;
1偶宫、Clear a global variable:
①非迹、清除一個全局變量;
②纯趋、postman.clearGlobalVariable(“variable.key”);
2憎兽、Clear an environment variable:
①、清除一個環(huán)境變量吵冒;
②纯命、postman.clearGlobalEnvironmentVariable(“variable.key”);
3、Response body:Contains string:
①痹栖、response包含內(nèi)容亿汞;
②、tests[“Body matches string”]=responseBody.has(“string_you_want_to_search”)
4揪阿、Response body:Convert XML body to a JSON Object:
①疗我、將xml格式的response轉(zhuǎn)換成json格式咆畏;
②、var jsonObject = xml2Json(responseBody);
5吴裤、Response body:Is equal to a string:
①旧找、response等于預(yù)期內(nèi)容;
②麦牺、tests[*Body is corret*] = resposeBody === *response_body_string*;
6钮蛛、Response body:JSON value check:
①、json解析key的值進行校驗剖膳;
②魏颓、tests[*Args key contains argument passed as url parament*] = ‘test’ in responseJSON.args;
7、Response headers:Content-Type header check:
①潮秘、檢查response的header信息是否有被測字段琼开;
②、tests[*Content-Type is present*] = postman.getResponseHeader(“Content-Type”);
8枕荞、Response time is less than 200ms:
①柜候、響應(yīng)時間判斷;
②躏精、tests[*Response time is less than 200ms*] = responseTime < 200;
9渣刷、Set an global variable:
①、設(shè)置全局變量矗烛;
②辅柴、postman.setGlobalVariable(“variable_key”,”variable_value”);
10、Set an environment variable:
①瞭吃、設(shè)置環(huán)境變量碌嘀;
②、postman.setEnvironmentVariable(“variable_key”,”variable_value”);
11歪架、Status code:Code is 200:
①股冗、判斷狀態(tài)碼;
②和蚪、tests[“Status code is 200”] = responseCode.code !=400;
12止状、Status code:Code name has string:
①稚失、檢查code name是否包含內(nèi)容递礼;
②、tests[“Status code name has string”] = responseCode.name.has(“Created”);
13近范、Status code:Successful POST request:
①催束、成功的post請求集峦;
②、tests[“Successful POST request”] = 201 ||responseCode.code ===202;
14、Use Tiny Validator for JSON data:
var schema = {
? "items": {
??? "type": "boolean"
? }
};
var data1 = [true, false];
var data2 = [true, 123];
pm.test('Schema is valid', function() {
? pm.expect(tv4.validate(data1, schema)).to.be.true;
? pm.expect(tv4.validate(data2, schema)).to.be.true;
});
六少梁、?? 測試集合Collections
1洛口、數(shù)據(jù)驅(qū)動的接口自動化測試
2、命令行中運行
1凯沪、命令行中運行:可以在無UI界面的服務(wù)器上運行第焰;可以在ci持續(xù)集成系統(tǒng)上運行;
2妨马、運行準備:導(dǎo)出collection挺举;安裝nodejs和npm(國內(nèi)cnpm);安裝newman烘跺;
3湘纵、生成測試報告:CLI reporter;JSON reporter滤淳;HTML reporter梧喷;JUnit reporter;
七脖咐、?? 變量
?1铺敌、環(huán)境變量environment:比如可以將測試domain設(shè)置成環(huán)境變量;
2屁擅、全局變量Global variable:實現(xiàn)接口請求的參數(shù)依賴于其他接口的返回偿凭,比如可以將錯誤信息設(shè)置成全局變量;
3派歌、Local本地變量:一般可以在sandbox中定義弯囊;
4、Data:測試數(shù)據(jù)中導(dǎo)入的變量胶果,也就是所謂的參數(shù)化匾嘱;
注意:當全局變量和環(huán)境變量沖突時,環(huán)境變量覆蓋全局變量早抠;
八奄毡、?? 在test suite中運行test case
1、Environment :環(huán)境變量贝或;
2、Iterations:重復(fù)運行次數(shù)锐秦;
3咪奖、Delay:間隔時間,用例與用例間的間隔時間酱床;
4羊赵、Data:外部數(shù)據(jù)加載,即用例的參數(shù)化,可以與Iterations結(jié)合起來用昧捷,實現(xiàn)參數(shù)化闲昭,也就是數(shù)據(jù)驅(qū)動;
九靡挥、?? 生成Request代碼
1序矩、導(dǎo)出python腳本進行數(shù)據(jù)驅(qū)動的接口測試
1、導(dǎo)出python的requests腳本
2跋破、使用nuittest進行接口自動化測試
2簸淀、導(dǎo)出java代碼進行數(shù)據(jù)驅(qū)動的接口測試
1、導(dǎo)出成java的OkHttp代碼毒返;
2租幕、使用Junit進行接口自動化測試;
3拧簸、使用fastJSON解析json字符串劲绪;
十、?? Jekins+postman+newnam
1盆赤、Postman導(dǎo)出用例集合和導(dǎo)出環(huán)境變量贾富;
2、newman運行:①弟劲、無環(huán)境變量:newman run D:\API.postman_collection.json;
???????????? ②祷安、有環(huán)境變量:newman run D:\API.postman_collection.json –environment D:\postnam_environment.json;
3、執(zhí)行服務(wù)器上的Collection:newman –u?https://www.getpostman.com/collections/cb208e7e64056f5294e5;
4兔乞、jenkins:①汇鞭、構(gòu)建;②庸追、構(gòu)建后發(fā)郵件霍骄;
十一、?? Interceptor錄制
1淡溯、先在瀏覽器安裝Interceptor读整,并打開;
2咱娶、postman同時打開Interceptor米间;
3、刷新網(wǎng)頁膘侮,進行錄制請求屈糊;