大家在做介面自動化測驗的時候,碰到有登錄的系統應該都會遇到401權限的問題,下面我來說下如何解決這個問題,

首先需要了解問題的本質,是要解決什么?這樣我們才好對癥下藥,報401是因為用戶在登錄的時候,服務器會回傳cookie,cookie是個校驗機制,可以讓服務器知道用戶是誰,當然也還有什么token之類的,登錄后如果我要打開添加角色頁面,這時候瀏覽器就會自動帶上這個cookie給服務器,這樣我們就能順利打開這個頁面,但是我們在用postman做測驗的時候,登錄后再跳到添加角色頁面是沒有帶上這個cookie的,所以服務器不認識你是誰,沒辦法認證,所以才會報401,
好了,知道了問題的本質了,我們就要解決 ,我們要做的就是獲取服務器產生的這個cookie,并把這個cookie給到添加角色頁面的請求頭里,這樣服務器就可以認識你了,
ps:其實不管在postman還是在jmeter中,只要知道解決問題的思路,問題都會很輕松的解決了,這兩個工具只是解決方式不同,原理都是一樣的,有需要解決jmeter的可以看下我寫的另外一篇文章:https://blog.csdn.net/abcdeh8/article/details/121773762
在這里我以token為例,先在登錄介面的tests功能中添加下面一行代碼:
if(responseCode.code === 200 && responseBody.has("token")){
tests["login is ok"] = true;
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token",jsonData.data.token);
}else{
tests["login"] = false;
}
這行代碼的意思是:首先判斷登錄是否成功和回應訊息體中是否包括token,登錄成功后會回傳一個token值,如果都成功之后將回應訊息體的格式轉化為json格式,賦值給jsonData,然后取jsonData中data部分中的token給變數token,這樣我們就可以得到token了,
注意:這里jsonData.data.token要依介面回傳的情況而定,不要照抄,有的token值不一定在data中,以{}為分界點,

ps:postman中test功能可以用來做自動化測驗,目前支持的腳本語言為JavaScript,

然后就是把剛剛登錄生成的那個token給到請求頭里,點擊你登錄后要跳轉的介面,我這里是添加角色介面,進入header模塊中,添加一行,分別輸入Authorization、{{token}},如果還要跳轉到其他介面,只需要在請求頭里添加這行就可以了,

最后點擊集合,run下,就不報錯了,問題也就解決了,我們可以看到在注冊角色的請求頭檔案中,這個token就是登錄后生成的token,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397661.html
標籤:其他
上一篇:《人工智能及其應用》課程筆記(三)第3章 確定性推理
下一篇:意大利法院判定開源協議條款具有可強制執行性;一個命令即可安裝 CSS 框架;LibreOffice 7.3 RC1 發布 | 開源日報
