日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Postman 腳本的奧秘:JavaScript 的內(nèi)置對象和方法

來源: 責(zé)編: 時間:2023-10-13 14:37:22 267觀看
導(dǎo)讀Postman 的前后置腳本中是完全支持 JavaScript 編寫代碼,JavaScript 有很多內(nèi)置的對象和方法,可以幫助我們完成各種任務(wù),比如生成隨機(jī)數(shù)和測試響應(yīng)數(shù)據(jù)。一、生成隨機(jī)數(shù)使用Math.random()方法來生成一個 0 到 1 之間的隨

Postman 的前后置腳本中是完全支持 JavaScript 編寫代碼,JavaScript 有很多內(nèi)置的對象和方法,可以幫助我們完成各種任務(wù),比如生成隨機(jī)數(shù)和測試響應(yīng)數(shù)據(jù)。MvQ28資訊網(wǎng)——每日最新資訊28at.com

MvQ28資訊網(wǎng)——每日最新資訊28at.com

一、生成隨機(jī)數(shù)

使用Math.random()方法來生成一個 0 到 1 之間的隨機(jī)小數(shù),比如:MvQ28資訊網(wǎng)——每日最新資訊28at.com

Math.random() // 0.0-1.0之間的數(shù)字,小數(shù) 0.465413246541

生成一個指定范圍內(nèi)的隨機(jī)數(shù):MvQ28資訊網(wǎng)——每日最新資訊28at.com

Math.random()*10  // 0.0-10.0之間的數(shù)字,小數(shù) 9.465413246541

生成一個整數(shù),可以使用Math.floor()、Math.ceil()或者M(jìn)ath.round()方法來對小數(shù)進(jìn)行取整:MvQ28資訊網(wǎng)——每日最新資訊28at.com

Math.floor(Math.random()*10)  // 直接舍棄小數(shù)部分 0,1,2,3,4,5,6,7,8,9Math.floor(9.232323123313213)=9 // 直接舍棄小數(shù)部分 9Math.ceil(Math.random()*10)  // 進(jìn)1法,整數(shù)部分加1, 1,2,3,4,5,6,7,8,9,10Math.ceil(9.232323233231121)=10 // 進(jìn)1法,整數(shù)部分加1, 10Math.round(Math.random()*10) // 四舍五入法,最接近的整數(shù) 0,1,2,3,4,5,6,7,8,9,10Math.round(9.232323233231121)=9 // 四舍五入法,最接近的整數(shù) 9

場景 1:隨機(jī)生成一個用戶名

生成一個用戶名,規(guī)定格式為 kira001,kira002,jkira003。MvQ28資訊網(wǎng)——每日最新資訊28at.com

var num="";// 循環(huán)生成3位數(shù)for(var i=0;i<3;i++){    num +=Math.floor(Math.random()*10);}// 拼接用戶名var username = "kira" + num;// 打印用戶名console.log(username) // kira456

場景 2:隨機(jī)生成一個電話號碼

生成一個電話號碼,規(guī)定前三位為 135,138,156,181,199。MvQ28資訊網(wǎng)——每日最新資訊28at.com

// 定義前三位列表var list=["135","138","156","181","199"];// 隨機(jī)獲取一個下標(biāo)var index= Math.floor(Math.random()*list.length)// 獲取前三位var pre_phone3=list[index];// 定義后八位為空字符串var back_phone8 ="";// 循環(huán)生成后八位數(shù)字for(var i=0;i<8;i++){    back_phone8 +=Math.floor(Math.random()*10);}// 拼接電話號碼var phonenum = pre_phone3+back_phone8;// 打印電話號碼console.log(phonenum) // 15612345678// 設(shè)置為臨時變量,請求直接{{phonenum}}調(diào)用pm.variables.set('phonenum',phonenum);

二、請求數(shù)據(jù)或響應(yīng)數(shù)據(jù)處理

接口測試的時候,我們需要對請求數(shù)據(jù)或者響應(yīng)數(shù)據(jù)進(jìn)行一些邏輯處理和斷言,以確保數(shù)據(jù)的正確性和完整性。MvQ28資訊網(wǎng)——每日最新資訊28at.com

方法 1:pm 對象

pm 對象是一個全局對象,它提供了一些屬性和方法來訪問請求和響應(yīng)的信息。MvQ28資訊網(wǎng)——每日最新資訊28at.com

console.log(pm.response.code)   // 提取狀態(tài)碼 200console.log(pm.response.reason())  // 提取響應(yīng)信息 OKconsole.log(pm.response.headers)  // 提取響應(yīng)頭console.log(pm.response.responseTime)  // 提取響應(yīng)時間console.log(pm.response.text())  // 提取響應(yīng)體,不管body是什么格式的,都可以采用這個函數(shù)來提取console.log(pm.response.json())  // 提取json格式的響應(yīng)數(shù)據(jù),并轉(zhuǎn)化為json對象(即python字典)

方法 2:responseCode、responseTime 等對象

responseCode、responseTime 等對象是一些全局對象,它們也可以用來訪問請求和響應(yīng)的信息。MvQ28資訊網(wǎng)——每日最新資訊28at.com

var code=responseCode.code;       // 獲取響應(yīng)中的狀態(tài)碼200var codename=responseCode.name;   // 提取響應(yīng)信息 OKvar time=responseTime;            // 提取響應(yīng)時間var headers=postman.getResponseHeader('Content-Type');  // 提取響應(yīng)頭中的Content-Typevar cookies=postman.getResponseCookie('name').value;    // 獲取響應(yīng)cookies中的value值,括號中填寫cookies的name值var body=getResponseBody;        // 獲取響應(yīng)正文(是字符串,如果是json格式,那就是json字符串)var jsonData= JSON.parse(body)   // 將json字符串轉(zhuǎn)化為json對象(字典)

三、斷言響應(yīng)信息

pm.test()是一個全局函數(shù),用來定義一個測試用例,接受一個回調(diào)函數(shù)作為參數(shù)。MvQ28資訊網(wǎng)——每日最新資訊28at.com

斷言狀態(tài)碼

狀態(tài)碼是指服務(wù)器對請求的處理結(jié)果的一種表示,如: 200 表示成功,404 表示未找到,500 表示服務(wù)器錯誤等等。MvQ28資訊網(wǎng)——每日最新資訊28at.com

(1) 方法 1:pm.response.to.have.status()MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.response.to.have.status()用來判斷響應(yīng)的狀態(tài)碼。MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.test("Status code is 200", function () {     pm.response.to.have.status(200);});

(2) 方法 2:pm.expect()MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.expect()是一個全局函數(shù),用來創(chuàng)建一個期望值,并接受一個實(shí)際值作為參數(shù)。`pm.expect()還提供了一些鏈?zhǔn)椒椒ǎ梢杂脕磉M(jìn)行各種斷言。MvQ28資訊網(wǎng)——每日最新資訊28at.com

var code=pm.response.code;pm.test("鏈?zhǔn)綌嘌院唵问纠?,function(){    pm.expect(code).to.equal(200);    pm.expect({a: 1}).to.deep.equal({a: 1});    pm.expect({a: {b: ['x', 'y']}}).to.have.nested.property('a.b[1]');    pm.expect({'.a': {'[b]': 'x'}}).to.nested.include({'//.a.//[b//]': 'x'});    pm.expect({a: 1}).to.have.own.property('a');    pm.expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');    pm.expect({a: 1, b: 2}).to.have.all.keys('a', 'b');    pm.expect([]).to.be.an('array').that.is.empty;});

pm.expect()有非常多的鏈?zhǔn)椒椒ǎ唧w參考鏈接:https://www.chaijs.com/api/bdd/MvQ28資訊網(wǎng)——每日最新資訊28at.com

(3) 方法 3:if 語句和 tests 對象MvQ28資訊網(wǎng)——每日最新資訊28at.com

tests 是一個全局對象,用來存儲測試結(jié)果,接受一個布爾值作為參數(shù)。MvQ28資訊網(wǎng)——每日最新資訊28at.com

var code =pm.response.code;if(code==200){    tests['狀態(tài)碼一致!']=true;}else{    tests['狀態(tài)碼不一致']=false;}

(4) 方法 4:tests 對象和比較運(yùn)算符MvQ28資訊網(wǎng)——每日最新資訊28at.com

比較運(yùn)算符是一種運(yùn)算符,用來比較兩個值的大小或相等性,并返回一個布爾值。MvQ28資訊網(wǎng)——每日最新資訊28at.com

tests['狀態(tài)碼的檢驗(yàn)']=pm.response.code===200;

斷言響應(yīng)體

響應(yīng)體是指服務(wù)器返回給客戶端的數(shù)據(jù),它可以是文本、圖片、音頻、視頻等等。MvQ28資訊網(wǎng)——每日最新資訊28at.com

(1) 方法 1:pm.expect()MvQ28資訊網(wǎng)——每日最新資訊28at.com

全量匹配或者部分匹配:MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.test("全量匹配或者部分匹配", function () {     var body =pm.response.text();     pm.expect(body).to.equal('{"status":2,"msg":"請求成功"}');// 全量匹配     pm.expect(body).to.include('請求成功');// 部分匹配});

響應(yīng)的具體內(nèi)容不固定,但它的格式和結(jié)構(gòu)固定,則可以結(jié)構(gòu)匹配或者鍵值匹配:MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.test("響應(yīng)結(jié)構(gòu)匹配", function () {     var jsonData = pm.response.json();     // 結(jié)構(gòu)匹配     pm.expect(jsonData).to.eql({          "errcode": 0,          "data": { "user_id": 1 }     });     // 鍵值匹配     pm.expect(jsonData.status).to.equal(2);     pm.expect(jsonData.msg).to.equal("請求成功");});

(2) 方法 2:pm.response.to.have.jsonBody()MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.test("Body is json", function () {  //檢查響應(yīng)體是否為 json 格式。  pm.response.to.have.jsonBody();  //檢查響應(yīng)體中是否存在某個鍵或者某個值。    pm.response.to.have.jsonBody('status');// 檢查鍵是否存在  pm.response.to.have.jsonBody(2);// 檢查值是否存在});

(3) 方法 3:pm.response.to.have.jsonSchema()MvQ28資訊網(wǎng)——每日最新資訊28at.com

檢查響應(yīng)體是否符合某個 json 模式(schema),包含兩個必需的屬性 errcode(數(shù)字) 和 errmsg(字符串)。MvQ28資訊網(wǎng)——每日最新資訊28at.com

pm.test("Body matches schema", function () {  var schema = {     "type": "object", // 對象     "properties": {          "errcode": {               "type": "number" // 數(shù)字類型          },          "errmsg": {               "type": "string" // 字符串類型          }     },     "required": ["errcode", "errmsg"]  // 必須};  pm.response.to.have.jsonSchema(schema);});

常見特殊場景斷言思路分析

(1) 場景 1:響應(yīng)體 json 格式的數(shù)量比較大,不能全量匹配整個 json 格式,如何斷言?MvQ28資訊網(wǎng)——每日最新資訊28at.com

只檢查響應(yīng)體中的一些關(guān)鍵的鍵或者值MvQ28資訊網(wǎng)——每日最新資訊28at.com

(2) 場景 2:返回的 json 格式的數(shù)據(jù)是變化的,如何斷言?MvQ28資訊網(wǎng)——每日最新資訊28at.com

這種情況下,使用 json 模式來檢查響應(yīng)體的結(jié)構(gòu)和約束,而不是具體的內(nèi)容。MvQ28資訊網(wǎng)——每日最新資訊28at.com

(3) 場景 3:如果返回的 json 格式的 Body 數(shù)據(jù)是動態(tài)變化的怎么辦?MvQ28資訊網(wǎng)——每日最新資訊28at.com

  • 首先檢查是否為 json 格式
  • 可以只檢查 body 中是否存在期望的鍵,主要檢查哪些核心的鍵
  • 可以檢查返回 json 結(jié)構(gòu)是否正確

本文鏈接:http://www.www897cc.com/showinfo-26-13563-0.htmlPostman 腳本的奧秘:JavaScript 的內(nèi)置對象和方法

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 在 IDEA 中的各種調(diào)試技巧,輕松定位 Bug(超級全面)

下一篇: 性能工程實(shí)踐

標(biāo)簽:
  • 熱門焦點(diǎn)
  • K60至尊版狂暴引擎2.0加持:超177萬跑分?jǐn)孬@性能第一

    Redmi的后性能時代戰(zhàn)略發(fā)布會今天下午如期舉辦,在本次發(fā)布會上,Redmi公布了多項(xiàng)關(guān)于和聯(lián)發(fā)科的深度合作,以及新機(jī)K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 學(xué)習(xí)JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門語言的時候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 之家push系統(tǒng)迭代之路

    前言在這個信息爆炸的互聯(lián)網(wǎng)時代,能夠及時準(zhǔn)確獲取信息是當(dāng)今社會要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動拉"獲取信息的方式已不能滿足用
  • JavaScript學(xué)習(xí) -AES加密算法

    引言在當(dāng)今數(shù)字化時代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進(jìn)行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 自動化在DevOps中的力量:簡化軟件開發(fā)和交付

    自動化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動化工具和方法,DevOps團(tuán)隊(duì)可以實(shí)現(xiàn)以下目標(biāo):消除手動和重復(fù)性任務(wù)。簡化流程。在整個軟件開發(fā)生命周期中實(shí)現(xiàn)更
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(消息堆積)、消費(fèi) 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • 四年持續(xù)更迭堅(jiān)持探索行業(yè)無人之境,HarmonyOS 4帶來五大升級多項(xiàng)創(chuàng)新

    除了華為每年新發(fā)布的旗艦手機(jī)系列,上億花粉更加期待鴻蒙系統(tǒng)每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式發(fā)布,這也是該系統(tǒng)歷經(jīng)四年的再
  • iQOO 11S評測:行業(yè)唯一的200W標(biāo)準(zhǔn)版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),該機(jī)不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 最薄的14英寸游戲筆記本電腦 Alienware X14已可以購買

    2022年1月份在國際消費(fèi)電子展(CES2022)上首次亮相的Alienware新品——Alienware X14現(xiàn)在已經(jīng)可以購買了,這款筆記本電腦被譽(yù)為世界上最薄的 14 英寸游戲筆
Top 主站蜘蛛池模板: 廉江市| 宿州市| 铜梁县| 海盐县| 永丰县| 南郑县| 赤城县| 陆丰市| 大新县| 赤壁市| 岳西县| 汉寿县| 南开区| 桐城市| 永善县| 阿鲁科尔沁旗| 塘沽区| 怀柔区| 鄂温| 阿尔山市| 霞浦县| 青冈县| 海城市| 怀安县| 通渭县| 镇雄县| 佛山市| 海盐县| 泽普县| 灵山县| 肇东市| 彰化市| 岳池县| 枣庄市| 伊宁县| 泰宁县| 怀柔区| 绥化市| 望城县| 米易县| 杭锦旗|