五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Postman接口測試使用教程和接口自動化測試項目實戰(zhàn)你要的都有

2023-08-21 20:42 作者:君無懮  | 我要投稿

有些圖片沒有cv過來,建議大家邊看視頻邊記筆記,筆記一定要自己記。

如果筆記有錯誤加我qq:3279793245 p22之后視頻沒有看

測試系統(tǒng)組件接口之間的一種測試


1 分類:

測試外部接口:測試被測系統(tǒng)和外部系統(tǒng)之間的接口 (只測正向)

測試內(nèi)部接口:

1.內(nèi)部接口只提供給內(nèi)部系統(tǒng)使用 (公司內(nèi)部使用)

2.內(nèi)部接口提供給外部系統(tǒng)使用 (全面測試,異常場景,權(quán)限控制)


2 接口測試流程和用例設(shè)計

1 拿到接口api文檔(或者f12抓包工具),熟悉接口業(yè)務(wù),接口地址,鑒權(quán)方式,入?yún)?,錯誤碼

2 編寫接口測試用例以及評審

思路:

正例:輸入正確入?yún)?,接口返回正確數(shù)據(jù)

返例:

鑒權(quán)反例:

鑒權(quán)碼為空,錯誤,過期......

參數(shù)反例:

為空,參數(shù)類型異常,長度異常

錯誤碼覆蓋:

根據(jù)業(yè)務(wù)來定。

其他錯誤場景:

接口黑名單,接口調(diào)用次數(shù)限制,分頁場景

3 使用postman執(zhí)行測試用例

4 postman+nweman+Jenkins實現(xiàn)持續(xù)集成并且輸出測試報告并且發(fā)送郵件。


3 postman 介紹 使用

創(chuàng)建項目


3.2 創(chuàng)建接口



get請求頁簽

左邊豎著目錄解釋


collections :集合 項目

APIS: api文檔

environments:環(huán)境變量

Mock servers:服務(wù)器

Monitors:監(jiān)聽

History:歷史記錄


=---------------=

橫著關(guān)鍵字解釋


Params :get傳參

Authorization:鑒權(quán)

Headers :請求頭

Body:post請求傳參地方

none:沒有參數(shù)

from-data :既可以傳鍵值對,也可以傳文件

x-www-from-urlcodend:只能傳鍵值對

raw:傳json,text,xml,html,javaScript

binary:把文件以二進制的方式傳參

Pre-request Script:請求之前的腳本

Tests:請求之后的(腳本)斷言

Settings:設(shè)置

Cookies:用于管理cookies信息


-----Authorization:鑒權(quán)圖解

Body:post請求傳參地方

from-data :既可以傳鍵值對,也可以傳文件

Cookies:用于管理cookies信息


post請求標(biāo)簽

Params 里可以以key-value形式添加鑒權(quán)token


響應(yīng)頁簽



下方關(guān)鍵字解釋

body:接口返回的數(shù)據(jù)

Pretty:以json,html,xml。。。不同格式查看返回的數(shù)據(jù)

Raw:以文本的方式查看返回的數(shù)據(jù)

PreView:以網(wǎng)頁的形式查看返回的數(shù)據(jù)

Cookies:響應(yīng)的cookies信息

Headers:響應(yīng)頭

Test Results:斷言的結(jié)果

··· -> Save response to file : 以文件形式保存此次響應(yīng)

get請求 post請求區(qū)別

get請求一般是獲取數(shù)據(jù)

post請求一般是提交數(shù)據(jù)

git:

速度快

不限制參數(shù)長度

入?yún)⒃趗rl里,保密性不強 url后面加 ? 多個參數(shù)以 & 分割

post:

速度慢

限制參數(shù)長度

入?yún)⒓用?/p>

4 postman環(huán)境變量 全局變量


Create Environment(環(huán)境變量):

添加環(huán)境變量:


使用環(huán)境變量:

環(huán)境變量key在URl欄里輸入要用 {{}} 括起來 ,然后右上角選擇對應(yīng)的環(huán)境運行。



Globals(全局變量):

全局變量:能夠在任何接口里面都能訪問的變量



5 接口關(guān)聯(lián)

1 使用json提取器實現(xiàn)接口關(guān)聯(lián)

需求:第一個接口里有access_token,第二個接口里需要這個token,就可以把token在第一個接口里設(shè)置為全局變量。


第一個接口里的 Tests :

console.log(responseBody);
//使用json提取器提取access_token值

//把返回的字符串的數(shù)據(jù)轉(zhuǎn)換成對象的形式
var result = JSON.parse(responseBody);
console.log(result.access_token);
//把access_toekn設(shè)置為全局變量
pm.globals.set("access_token".result.access_token);

console.log(responseBody); 打印上一個接口測試?yán)锏闹?/p>

var result = JSON.parse(responseBody); 把json值轉(zhuǎn)為對象

console.log(result.access_token); 打印需要的值的value (value=result.key) //點左下角Consele顯示控制臺

pm.globals.set("access_token",result.access_token); 設(shè)置變量名稱為 ‘a(chǎn)ccess_token’的全局變量

高亮兩行代碼就可以完成

第二個接口:

value里使用{{access_token}} 獲取value

圖示:

不用看地址欄(url沒改 )

第一個接口



第二個接口



1.1 查看環(huán)境變量和全局變量:



2 使用正則表達(dá)式提取器實現(xiàn)接口關(guān)聯(lián)

第一個接口里的Tests:

var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result);//到這先運行一下 result會有好幾個值,選擇正確的值的下標(biāo)放在第三行
pm.globals.set("access_token",result[1]); 設(shè)置全局變量

new RegExp('') //創(chuàng)建一個正則表達(dá)式 ,括號里傳進的值如果加雙引號,RegExp('')這個括號里就使用單引號。

new RegExp('"access_token":"(.*?)"') //黃色高亮是值的前面,橙色是值本身,值本身使用 (.*?) 代替。

原來的值為:

寫完第二行先運行一下 result會有好幾個值,選擇正確的值的下標(biāo)放在第三行。

//點左下角Consele顯示控制臺



第二個接口

value里使用{{access_token}} 獲取value



3 內(nèi)置動態(tài)參數(shù)以及自定義動態(tài)參數(shù)

postman內(nèi)置動態(tài)參數(shù):

{{$timestamp}} 生成當(dāng)前時間的時間戳

{{$randomint}} 生成1-1000的隨機數(shù),有可能重復(fù)

{{$guid}} 生成一個隨機的GUID的字符串


自定義動態(tài)參數(shù)

Pre-request Script()://請求之前執(zhí)行的腳本在這里寫代碼


var times = Date.new();
pm.globals.set("times", times);

var times = Date.new(); 獲得當(dāng)前時間戳賦值給times

pm.globals.set("times",?times); //把時間戳設(shè)置為全局變量

Body里直接使用times 。

//點左下角Consele顯示控制臺


6 業(yè)務(wù)閉環(huán)(增、改、查、刪)和文件上傳

一個業(yè)務(wù)如果有增刪改查,可以按照 增 改 查 刪的順序執(zhí)行接口,這樣數(shù)據(jù)庫就不會有多余數(shù)據(jù)。


文件上傳

Body from-date file

key設(shè)置文件名字 value 選擇地址


7 斷言

傳送門:csdn

Status code: Code is 200

檢查狀態(tài)碼為200

Response body: Contains string

響應(yīng)結(jié)果:包含指定字符串

Response body: JSON value check

響應(yīng)結(jié)果:json檢查

Response body: Is equal to a string

響應(yīng)結(jié)果:等于指定字符串

Response headers: Content-Type header check

header報文檢查

Response time is less than 200ms

響應(yīng)時間小于200ms

一般狀態(tài)斷言只有一個,業(yè)務(wù)斷言可以有多個

寫在Tests

運行結(jié)束之后在 Test Results里查看結(jié)果



全局?jǐn)嘌?:

每個接口都要寫狀態(tài)斷言

在項目- 項目名稱右鍵 Edit Tests 里添加狀態(tài)斷言


Status code: Code is 200 檢查返回值是否為200

//狀態(tài)斷言
pm.test("檢查返回狀態(tài)碼是否為200",function (){
     pm.response.to.have.status(200);
});

Response body: Contains string 檢查是否含有某個關(guān)鍵字

一定要自定義參數(shù),需要拼接 + pm.globals.get("key") 或者 globals["times"] 或者 globals.times都是獲取全局變量

//業(yè)務(wù)斷言
pm.test("檢查響應(yīng)中是否有token這個關(guān)鍵字", function () {
    pm.expect(pm.response.text()).to.include("token");
});

//豬豬俠215222在上面接口里是由 豬豬俠+{{times}} 組成的

//times是一個時間戳,在這里當(dāng)做隨機數(shù)

//業(yè)務(wù)斷言 獲取 值為豬豬俠times(豬豬俠215154)的key
pm.test("檢查是否有豬豬俠215648561", function () {
	//豬豬俠215222在上面接口里是由  豬豬俠+{{times}}   組成的
	//times是一個時間戳,在這里當(dāng)做隨機數(shù)
    pm.expect(pm.response.text()).to.include("豬豬俠"+ pm.globals.get("times"));
  	 pm.expect(pm.response.text()).to.include("豬豬俠"+globals["times"]));
		pm.expect(pm.response.text()).to.include("豬豬俠"+globals.times));

});

Response body: JSON value check

pm.test("檢查errcode為0",function(){
     var jsonData = pm.response.json();
     pm.expect(jsonData.errcode).to.eql(0);
});

8批量運行測試用例

在項目- 項目名稱右鍵 Run collection


批量上傳文件時,要在settings里General里 Working directory 下面 打開可讀取文件權(quán)限


9 通過csv或者json實現(xiàn)數(shù)據(jù)驅(qū)動(一個接口同時運行正例和反例)

csv

1 創(chuàng)建data.csv文件

2 value值依次為空進行運行,查看出錯后的返回值


3 所有的key,在文件的第一行用逗號隔開



4 第二行輸入正確的value,逗號隔開




5 其中一個key的value為空,其他正確,

其每個key的value依次為空,幾個key寫幾條數(shù)據(jù)

后面加上第一步各個value為空時的返回值代碼

正確的參數(shù)會返回token,錯誤會返回錯誤代碼



6 Params 下面 value 要改成date文件里的{{key}}



7 如果接口運行前需要token 或者鑒權(quán)驗證 要先進行判斷

因為錯誤的數(shù)據(jù)進行測試是沒有token,鑒權(quán)或api驗證可能不需要判斷

這個里token:

如果token不等于-1 ,則獲取token

if(responseBody.search("access_token")!=-1){
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result);//到這先運行一下 result會有好幾個值,選擇正確的值的下標(biāo)放在第三行
pm.globals.set("access_token",result[1]); 設(shè)置全局變量
};

這個token是寫死的,使用csv要修改

原來的:

//業(yè)務(wù)斷言 
pm.test("檢查響應(yīng)中是否有token這個關(guān)鍵字", function () {
    pm.expect(pm.response.text()).to.include("token");
});

csv:

accert_value在data.csv里對應(yīng)的就是token的key

//業(yè)務(wù)斷言 
pm.test("檢查響應(yīng)中是否有token這個關(guān)鍵字", function () {
    pm.expect(pm.response.text()).to.include(data.accert_value);
});

json

創(chuàng)建data.json

第一行寫正確數(shù)據(jù)

其他每個key的value依次為空,幾個key寫幾條數(shù)據(jù)

后面加上第一步各個value為空時的返回值代碼

正確會返回token,錯誤會返回錯誤代碼


[
	{"A":"1","B":"2","C":"3","accress_token":"token值4sdf6ds54gv6d4g35d4"},
	{"A":"","B":"2","C":"3","accress_token":4004},
  {"A":"1","B":"","C":"3","accress_token":4005},
	{"A":"1","B":"2","C":"","accress_token":4006}
]


其他和csv一樣



10 必須帶請求頭的接口

host:請求地址

Accept:客戶端接收到的數(shù)據(jù)格式

Connection: 連接方式

X-Requested-With 異步請求

User-Agent: 客戶端用戶類型

Referer: 請求來源地址

Cookie :Cookie信息

Content-type: 請求內(nèi)容格式


1 不知道用哪個請求,就把所有請求頭全部復(fù)制

抓包軟件




2 postman Headers-Bulk Edit 粘貼



3 刪除 Host以及Host以上的內(nèi)容



4 點擊Key-Value Edit,然后運行一遍取消一個對號,直到運行后Body-Previwe不顯示網(wǎng)頁


11 Postman接口Mock Servier服務(wù)器

mock 模擬

后端的接口還沒開發(fā)完成,前段的業(yè)務(wù)需要調(diào)用后端的接口


1 postman-Mock Servers-創(chuàng)建一個服務(wù)

這里是成功之后返回“ok”





2瀏覽器測試:

復(fù)制瀏覽器地址+“/接口名字”

https://b6965b04-0e94-42f0-b681-7b968017a447.mock.pstmn.io/test

11 Cookie鑒權(quán)

cookie只是一小段文本,格式key-value


原理:

1當(dāng)客戶端第一次訪問服務(wù)器的時候,那么服務(wù)器就會生成cookie,

并且在響應(yīng)頭的set-cookie里面把生成的cookie信息發(fā)送個客戶端,在客戶端保存起來。

2當(dāng)客戶端以后每次訪問服務(wù)器的時候,那么客戶端就會在請求頭的cookie帶上cookie信息,

從而實現(xiàn)鑒權(quán)。


cookie分類

會話cookie:保存在內(nèi)存里,瀏覽器關(guān)閉就會自動化清除cookie

持久cookie:保存在硬盤里,瀏覽器關(guān)閉后不會清除,只有當(dāng)過期時間過了才會清除



演示:

cookie在第一個接口里,使用正則表達(dá)式把cookie設(shè)置為全局變量(需求文檔會提示cookie在前端源碼里的位置)


需求文檔提示的token位置:


第一個接口Tests里代碼:

responseBody.match(new RegExp('name="csrf_token" value="(.*?)"'));
pm.globals.set("csrf_token",result[1]);

運行第一個接口,點右上角眼睛,最下面顯示cookie信息


第二個接口使用設(shè)置的全局變量


點擊cookies,刪除全部cookie,第二個接口會訪問失敗

12 加密和解密

13 Newman(新男人)

newman專用于接口測試,為postman而生,可以讓posman的腳本用過命令行的方式執(zhí)行

運行命令:newman run

常用參數(shù);

-e 引用環(huán)境變量

-g 引用全局變量

-d 引用數(shù)據(jù)文件

-n 指定測試用例迭代次數(shù)

-r cli,html,json,junit --reporter-html-export 指定生成html報告。


示例:

1 導(dǎo)出項目接口,環(huán)境,全局變量,數(shù)據(jù)文件(標(biāo)題9的csv和josn格式數(shù)據(jù)文件),把這些文件放在一個空白文件夾里。

接口


環(huán)境


全局變量


數(shù)據(jù)文件



2 文件地址欄cmd


3 輸入執(zhí)行代碼

newman run 接口文件.json -e 環(huán)境變量文件.json -g 全局變量.json -d 數(shù)據(jù)文件.json -r cli,json,unit --reporter-html-export report.html

--------------------------------------

-r cli,json,unit --reporter-html-export report.html 為固定格式 輸出report.html 這個文件

在文件存放的文件夾里,有輸出的html文件。


14 postman+newman+Jenkins實現(xiàn)接口測試持續(xù)集成


Postman接口測試使用教程和接口自動化測試項目實戰(zhàn)你要的都有的評論 (共 條)

分享到微博請遵守國家法律
郸城县| 宜丰县| 台山市| 华宁县| 昭苏县| 香格里拉县| 泰安市| 蒙自县| 观塘区| 沈丘县| 富蕴县| 远安县| 张家港市| 咸丰县| 海兴县| 清流县| 博爱县| 宕昌县| 榆社县| 镇平县| 凭祥市| 本溪| 曲周县| 同江市| 峨边| 新闻| 阳曲县| 丹东市| 兰溪市| 洛川县| 久治县| 兰州市| 沾益县| 西林县| 怀集县| 泰和县| 青州市| 潼关县| 道孚县| 密山市| 邹平县|