?第一種獲取cookies的方式
看有沒有專門的登錄測試地址,訪問來獲取cookie信息,然后將cookie信息粘貼到header里面
第二種獲取cookies的方式
在登錄前,提前打開審查元素,然后輸入賬號(hào)密碼后,點(diǎn)擊登錄,就可以從檢查工具(或者是去fiddler抓包工具去抓接口)里面抓接口查看cookie信息,
?
?或者點(diǎn)擊“應(yīng)用”也可以查看到cookie數(shù)據(jù)?(在登錄前,提前打開審查元素,然后輸入賬號(hào)密碼后,點(diǎn)擊登錄)
第三種獲取cookies的方式
為了防止瀏覽器的設(shè)置或者域名影響導(dǎo)致獲取的cookie不一樣,影響postman與其他接口進(jìn)行接口關(guān)聯(lián),可以抓取登錄接口,去postman工具另外獲取一個(gè)cookie信息。
抓取的接口地址:
?執(zhí)行登錄接口時(shí),需要用到的傳參字段在這看:
?在postman輸入字段傳參即可獲取到cookie信息
Q1:在瀏覽器中獲取的cookie信息與直接拿接口去postman獲取的cookie信息有什么不一樣,之間會(huì)有什么影響嗎?
答:獲取的cookie信息是存儲(chǔ)在瀏覽器中的,它們是與當(dāng)前域名和路徑相關(guān)的。在獲取cookie信息時(shí),與服務(wù)器交互的是瀏覽器,獲取到的是瀏覽器中和當(dāng)前站點(diǎn)相關(guān)的cookie信息。
在postman中直接獲取cookie信息是向服務(wù)器直接請求相關(guān)接口獲取的,與瀏覽器中不同,它們是與接口相關(guān)的,與當(dāng)前域名和路徑無關(guān)。
這兩種方式獲取的cookie信息是不同的,使用時(shí)需要注意。很多情況下,需要使用瀏覽器中獲取的cookie信息來進(jìn)行后續(xù)的請求操作,尤其是需要模擬用戶登錄狀態(tài)的情況下。而直接使用postman獲取的cookie信息則只能用于postman中的接口請求測試,無法模擬真實(shí)的用戶登錄狀態(tài)。
Q2:在進(jìn)行接口關(guān)聯(lián)的時(shí)候,要用到的cookie信息可以直接去網(wǎng)頁瀏覽器上獲取嗎,跟直接在postman中獲取的cookie一樣嗎?
在進(jìn)行接口關(guān)聯(lián)時(shí),獲取的cookie信息應(yīng)該與要測試的接口相關(guān)。如果要測試的接口需要在登錄后才能訪問,那么需要使用登錄后的cookie信息。
在網(wǎng)頁瀏覽器上獲取到的cookie信息與在postman中獲取的cookie信息可能不完全相同,具體取決于cookie是否是與當(dāng)前域名和路徑相關(guān)。如果cookie是與當(dāng)前站點(diǎn)相關(guān),那么在瀏覽器和postman中獲取的cookie信息應(yīng)該是相同的。但是如果cookie是與接口相關(guān)的,則在postman中獲取的cookie信息和在瀏覽器中獲取到的cookie信息是不同的。
通常情況下,我們可以通過在瀏覽器中登錄并獲取cookie信息,然后在postman中手動(dòng)設(shè)置cookie信息來進(jìn)行接口測試和關(guān)聯(lián)。但是在這個(gè)過程中需要注意確保使用的cookie信息是與要測試的接口相匹配的。
簡單post請求
獲取到cookie信息后,就可以在postman工具將接口進(jìn)行post請求,比如我有一個(gè)收藏的接口,在postman中是這樣操作的:
在headers里面輸入以上方法獲取的cookie信息
?然后在body里面輸入要傳的字段信息,點(diǎn)擊send就可以拿到數(shù)據(jù)了
接口關(guān)聯(lián)
冷啟動(dòng):當(dāng)啟動(dòng)應(yīng)用時(shí),后臺(tái)沒有該應(yīng)用的進(jìn)程,這時(shí)系統(tǒng)會(huì)重新創(chuàng)建一個(gè)新的進(jìn)程分配給該應(yīng)用,這個(gè)啟動(dòng)方式就是冷啟動(dòng)。
熱啟動(dòng):當(dāng)啟動(dòng)應(yīng)用時(shí),后臺(tái)已有該應(yīng)用的進(jìn)程(例:按back鍵、home鍵,應(yīng)用雖然會(huì)退出,但是該應(yīng)用的進(jìn)程是依然會(huì)保留在后臺(tái),可進(jìn)入任務(wù)列表查看),所以在已有進(jìn)程的情況下,這種啟動(dòng)會(huì)從已有的進(jìn)程中來啟動(dòng)應(yīng)用,這個(gè)啟動(dòng)方式就是熱啟動(dòng)。
接口關(guān)聯(lián)通常在下列場景下用到:
1. 接口依賴:當(dāng)一個(gè)接口的返回?cái)?shù)據(jù)是另一個(gè)接口的請求參數(shù)時(shí),需要使用接口關(guān)聯(lián)來傳遞數(shù)據(jù)。例如,用戶注冊成功后需要登錄,登錄接口需要使用注冊接口返回的用戶ID和密碼來登錄。
2. 數(shù)據(jù)傳遞:在一個(gè)復(fù)雜的測試場景中,需要多個(gè)接口協(xié)同工作來完成某項(xiàng)任務(wù)。使用接口關(guān)聯(lián)可以將前一個(gè)請求的響應(yīng)數(shù)據(jù)傳遞給前一個(gè)請求,來完成整個(gè)任務(wù)。
3. 數(shù)據(jù)準(zhǔn)備:有些情況下,需要在測試正式開始前準(zhǔn)備一些數(shù)據(jù),例如創(chuàng)建一個(gè)用戶或者創(chuàng)建一個(gè)訂單。使用接口關(guān)聯(lián)可以將先前的請求的響應(yīng)數(shù)據(jù)傳遞到后續(xù)的請求中,以便完成數(shù)據(jù)準(zhǔn)備。
使用接口關(guān)聯(lián)可以有效地減少測試用例中冗余的代碼,提高代碼的復(fù)用性和整體測試用例的可維護(hù)性。同時(shí),通過接口關(guān)聯(lián)還可以更好地模擬真實(shí)的測試場景,提高測試的準(zhǔn)確性和有效性。
一個(gè)具體的例子:假設(shè)我們測試一個(gè)電商網(wǎng)站的下單流程,流程分為三步:添加商品到購物車、填寫收貨地址和支付訂單。在測試這個(gè)流程的過程中,我們需要傳遞在前面的請求中獲取到的數(shù)據(jù)到后續(xù)的請求,這時(shí)候就需要使用接口關(guān)聯(lián)。
例如,我們可以先發(fā)送一個(gè)添加商品到購物車的請求,然后將該請求的響應(yīng)中的商品信息(例如商品ID、名稱以及價(jià)格等)傳遞到后續(xù)的請求中。這樣,在填寫收貨地址和支付訂單的請求中,就可以根據(jù)前面的請求中獲取到的商品信息來進(jìn)行相應(yīng)的操作,而不需要手動(dòng)輸入商品信息,這樣既簡化了測試用例,也加速了測試流程。
另一個(gè)具體的例子是,在進(jìn)行性能測試時(shí),通常需要模擬多個(gè)并發(fā)用戶做同樣的事情,比如同時(shí)發(fā)送請求進(jìn)行搜索、發(fā)布帖子等操作。如果每個(gè)用戶單獨(dú)發(fā)送一系列完整的操作步驟,那么需要發(fā)送大量冗余請求,很快就會(huì)超過服務(wù)器處理能力,從而測試結(jié)果就無法反映真實(shí)場景下的性能瓶頸。
因此,一種更好的做法是,將各個(gè)操作分解成一個(gè)個(gè)小的模塊,例如搜索請求、登錄請求、發(fā)布帖子請求等,然后對(duì)每個(gè)小模塊進(jìn)行壓力測試。這時(shí)就需要使用接口關(guān)聯(lián),例如:每個(gè)用戶發(fā)送一個(gè)登錄請求,獲取登錄Token,然后使用同一個(gè)Token來發(fā)送搜索請求和發(fā)布帖子請求。這樣就可以實(shí)現(xiàn)多用戶并發(fā)操作,而且可以通過Parametrize功能來隨機(jī)生成測試數(shù)據(jù),使測試更具多樣性和可擴(kuò)展性,同時(shí)還可以減少測試用例的復(fù)雜度和代碼量,提高測試效率和準(zhǔn)確性。
所以,在項(xiàng)目中,多個(gè)接口之間都是有相互關(guān)聯(lián)的。
如:注冊之后就是登陸,一個(gè)業(yè)務(wù)增刪改查不可能一個(gè)接口一個(gè)接口測,如果一個(gè)參數(shù)可能從新增到修改再到刪除D都是關(guān)聯(lián),則需要在第一個(gè)接口先去獲取到,然后在下面接口使用時(shí)可以調(diào)用。
一般情況下的post請求需要先登錄獲取到token,下一個(gè)請求需要攜帶對(duì)應(yīng)的token才能進(jìn)行請求。下面將對(duì)舉例。
一、json提取器實(shí)現(xiàn)接口關(guān)聯(lián)
1、請求登錄接口,成功后返回對(duì)應(yīng)的token
2、在第一步請求成功之后的Tests下通過js來設(shè)置全局變量
//json提取器獲取返回值
var jsonData = pm.response.json();
//可打印查看返回的token值
console.log(jsonData.detail.token)
//根據(jù)接口結(jié)果層級(jí)獲取對(duì)應(yīng)的值,設(shè)置為全局變量
pm.globals.set("token", jsonData.detail.token);
發(fā)送后可在控制看查看詳情:
看全局變量值:
3、發(fā)送第二個(gè)接口請求,可通過{{token}}引用設(shè)置的全局變量
?4、發(fā)送請求
?二、正則表達(dá)式提取器實(shí)現(xiàn)接口關(guān)聯(lián)
依然是在第一步請求成功之后的Tests下通過js來設(shè)置
//match匹配,獲取token值
var result = responseBody.match(new RegExp('"token":"(.*?)"'))
//取下標(biāo)為1的值
console.log(result[1]);
//設(shè)置為全局變量
pm.globals.set("token",result[1]);
文章來源:http://www.zghlxwxcb.cn/news/detail-455138.html
?接口關(guān)聯(lián)部分參考文章來源地址http://www.zghlxwxcb.cn/news/detail-455138.html
到了這里,關(guān)于獲取cookies的方法及使用postman進(jìn)行接口關(guān)聯(lián)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!