1. 程式人生 > 其它 >介面測試27--Postman-Tests斷言

介面測試27--Postman-Tests斷言

測試斷言Tests

在Tests中如果沒有斷言,則測試結果(Test Results)會顯示沒有測試
用於處理響應結果(響應頭、響應體/響應正文)、進行斷言(判斷介面的返回結果是否符合預期)

除錯指令碼的相關程式碼

a)console.log(資料);
向控制檯輸出資料
console:控制檯(用於顯示日誌的一個視窗)
log:日誌
b)var  變數名=資料;
定義一個變數(記憶體中的一個位置,裡面儲存了=號右邊的資料),變數可以在後面反覆使用(不用重複去寫複雜的資料)
var:variable,變數
c)typeof  資料或變數
檢視資料或變數中儲存的資料的型別,以決定後面如何處理資料
type:型別
of:的,誰的

響應斷言

(1) 就是比對測試結果是否正確
(2) 方法
① 選單操作/模板

② 程式碼

獲得響應

狀態碼

responseCode.code:固定寫法,必須嚴格按大小寫用
response:響應,表示伺服器發來的資料
code:程式碼
比如200、301、302、403、404、500等都是響應狀態碼
檢視響應狀態碼:var ztm=responseCode.code;

響應正文

responseBody:固定寫法,必須嚴格按大小寫用
body:正文,主體
注意:不論是響應型別是html格式(網頁<html>、<table>)、json格式({ })、xml格式,還可以是別的型別,一般響應正文都被改變成了字串型別

對響應結果的處理

a)text/html格式(純字串或者html網頁程式碼格式)
    有很多處理方式,比如split是其中之一
    字串.split("分割符"):表示對字串按照分隔符拆成多個字串
b)json格式
注意:響應正文字身是字串,即便響應型別是json格式,結果也是字串,所以必須將字串轉成json字典型別
JSON.parse(responseBody):把響應正文轉成json字典(注意響應正文必須是帶{ }格式的才可以轉)
parse:轉換型別
{
    "a":"zhsan",
    "b":{
        "c":20
        }
}
看a的值:
    JSON.parse(responseBody).a
    JSON.parse(resposneBody)["a"]
    引號不能省略,單引號也可以
看c的值:
    JSON.parse(responseBody).b.c
    JSON.parse(resposneBody)["b"]["c"]
    引號不能省略,單引號也可以

斷言程式碼寫法

tests['斷言訊息']=responseBody.has('預期文字')

① tests是關鍵字
② has表示包含、有
③ 如果包含預期文字,則測試結果為Pass,否則結果為Fail

測試login介面(需求檢視exam專案需求)

介面需求:
​	地址:http://IP/exam/login/
​	方法:post
​	引數:username、password
	資料庫表:exam.user
​	返回值:text/html
​	預期包含文字(假設測試登入成功的情況):登入驗證成功
新增測試資料:
	使用者名稱 test01,密碼 123456
	insert into exam.user values(2,'test01','123456');



測試signup介面(需求檢視exam專案需求)

介面需求:
​	地址:http://IP/exam/signup/
​	方法:post
​	引數:username、password、confirm、name
	資料庫表:exam.user
​	返回值:json
​	預期包含文字(假設測試成功註冊):Success
注意刪除資料:
	delete from exam.user where id>1;




tests['斷言訊息']=實際結果===預期結果

① === 表示相等
② = 表示賦值
③ 對比
	1) has斷言是一種模糊匹配,部分資料正確即可,has一般用於text/html型別的斷言
	2) ===是一種精確匹配,資料必須完全一致,一般用於json斷言

測試登入介面(需求檢視exam專案需求)

介面需求:
​	地址:http://IP/exam/login/
​	方法:post
​	引數:username、password
	資料庫表:exam.user
​	返回值:text/html
​	預期包含文字(假設測試登入成功的情況):登入驗證成功
新增測試資料:
	使用者名稱 test01,密碼 123456
	insert into exam.user values(2,'test01','123456');
要求使用===對登入介面進行斷言




測試signup介面(需求檢視exam專案需求)

介面需求:
​	地址:http://IP/exam/signup/
​	方法:post
​	引數:username、password、confirm、name
	資料庫表:exam.user
​	返回值:json
​	預期包含文字(假設測試成功註冊):Success
注意刪除資料:
	delete from exam.user where id>1;
要求使用===對註冊介面進行斷言




響應斷言型別

has斷言

響應正文:相當於實際結果
		has斷言是判斷實際結果中包含預期結果(字串)

json斷言

支援has斷言(當對實際結果中的漢字斷言時,較難)
使用===對json進行部分斷言、整體斷言
	1)將響應正文()轉為json字串格式
		actual =JSON.parse(responseBody)//將實際結果轉換為json字典形式
	2)JSON部分資料斷言
		actual['鍵名']或actual.鍵名可以獲得實際結果中的某個鍵的值,對於漢字,正常顯示
		巢狀json:actual['鍵名1']['鍵名2']
	3)json整體斷言
​		對json字串進行格式化(統一格式)
​		postman中不支援json字串1===json字串2
​		json字串格式化方式:JSON.stringify(json字串)
​		鍵、字串資料、日期等全都加雙引號定界,數值資料不變
​		鍵與值之間的空格、鍵值對之間的空格會被自動刪除

測試重複註冊,新增JSON部分斷言

介面需求:
​	地址:http://介面伺服器IP地址/exam/signup/
​	方法:post
​	引數:username、password、confirm、name
​	預期:{'Status':1003, 'Result':'Username  is taken', 'Message':'使用者名稱已被佔用'}
注意:資料庫中準備資料
insert into exam.user(id,username,password,name) values(2,'test01','123456','測試01');




測試使用者重複註冊時,驗證返回的JSON字串整體是否正確

介面需求:
​	地址:http://介面伺服器IP地址/exam/signup/
​	方法:post
​	引數:username、password、confirm、name
​	預期:{'Status':1003, 'Result':'Username  is taken', 'Message':'使用者名稱已被佔用'}
注意:資料庫中準備資料
insert into exam.user(id,username,password,name) values(2,'test01','123456','測試01');