特別注意:需要使用全局變量或者預處理前務必閱讀本鏈接https://www.cnblogs.com/becks/p/13713278.html
場景(一)描述:
在未知有多少會員卡的前提下,對會員卡進行禁用操作。問題的關鍵是,會員卡種類數未知,且只能通過獲取會員卡后,判斷會員卡數,且禁用操作需要獲取接口返回id來實現對會員卡的禁用

實現步驟:1、首先獲取會員卡列表,把會員卡id變量化;
2、將變量化后的會員卡傳給禁用操作的api,執行禁用操作
第一步,獲取會員卡列表的接口返回如下

第二步,創建“腳本代碼[Javascript]”,創建后的界面如下圖,后面需要對腳本進行處理


第三步,處理腳本和數據。
1、第一步的時候,獲取會員卡數據的接口已經執行了,且返回數據,所以這里的第一步,需要“綁定求他測試步驟的參數”,把會員卡id引入到禁用接口中

2、會員卡的id存儲在Data中,選中Data,確認

3、插入成功后,示例區域顯示如下圖

4、需要處理一下

5、預期目標是禁用所有的會員卡,但是系統必須保留一個會員卡存在,所以保留第一個會員卡不禁用,其他的全禁用。所以需要創建循環,把獲取到的會員卡id循環給禁用執行去執行禁用。
引入for循環,注意下圖3個紅色下划線。第一個代表執行從第2組數據開始,因為第一組不執行,所以這里寫“1”,第二個下划線test代表let 定義的內容,第三個下划線是指循環{}內的內容,最后會有一個}結尾

6、完善api_1內的信息,這里主要填寫禁用接口的一些信息,如url內的禁用接口地址,name為操作步驟的名稱可自定義,method設置為post,因為禁用進口是post請求,headers空(視情況),bodytype設置json,請求數據以json格式提交,body后的內容,禁用接口body只有id:xx,這一項,而id又是從上面定義的test中獲取的,且只需要test中的Id值,所以可以寫成“id: test[i].Id”,這里的i對應data里的i,意思是第幾組會員卡下的id值

7、然后就是加入判斷,請求后的返回值不等於0,執行失敗,即禁用失敗

8,整個[Javascript]腳本如下,關鍵部分已標紅
//以下代碼為示例代碼(支持原生js/jquery寫法),正式測試前請刪除 //定義需要測試的API api_1 let apiResponse = response["248509"].Data; for (var i =1; i < apiResponse.length; i++) { var api_1 = { "url": "/{{storeid}}/Member/DisabledLevelCard", //[必填][string]請求地址,若不存在請求協議,默認http "name": "禁用會員卡", //[選填][string],API名稱,方便檢索,不填則默認為系統生成API編號 "method": "POST", //[選填][string],請求方式,可能值有[GET/POST/PUT/PATCH/DELETE/HEAD/OPTION],兼容大小寫,默認為GET "headers": {}, //[選填][object],請求頭部 "bodyType": "json", //[選填][string],請求體類型 "body": { id: apiResponse[i].Id }, "timelimit": "follow" //[選填][number],超時限制,單位為ms,超過時間則判斷為請求失敗,0為不限制請求時間(慎用!防止程序假死),默認為10s }; //執行api_1的測試,返回格式為{time:"請求時間",code:"HTTP狀態碼",response:"返回結果",header:"返回頭部"}, //如{time:"32ms",code:200,response:"helloworld",header:{"content-length":"568"}} var result_api_1 = eo.execute(api_1); //判斷返回結果 if (JSON.parse(result_api_1.response).Code != "0") { eo.stop("禁用執行失敗"); //中止測試,並且拋出相關信息。 } }
執行后返回信息

檢查頁面

場景(二)
場景(一)JS腳本內設置的接口,以json方式提交數據,如果遇到表單提交,則需要對bodyType修改一下,如下圖請求

那么在js插入腳本內,就需要修改下,把"bodyType": "form-data", 上排headers,需要注意,如果設置了環境全局變量,會影響這里的請求頭,所以需要在這里單獨修改文本格式,避免提交文本格式不正確

場景(三),假如需要循環的對象沒有數據?
比如刪除商品,如果當前沒有商品,按照場景(一)取數據,就會提示長度(length)錯誤,因為獲取的值是空的。所以這里需要加個if判斷
下圖紅框內即加入一個if判斷,如果返回的Datalist不為空,則執行if內的腳本內容

js 判斷的用法,參考https://www.runoob.com/js/js-if-else.html
