1. 簡介
Postman是一款功能強(qiáng)大的API開發(fā)工具,也是一款流行的自動(dòng)化測試工具。它提供了多種測試功能,包括測試腳本、預(yù)請(qǐng)求腳本和測試集合等。
1.1 測試腳本
測試腳本是Postman中用于自動(dòng)化測試的核心部分。它可以使用JavaScript語言編寫,通過發(fā)送API請(qǐng)求、獲取響應(yīng)并解析響應(yīng),驗(yàn)證API是否正常工作。
測試腳本可以訪問請(qǐng)求和響應(yīng)對(duì)象,以及Postman的全局變量和環(huán)境變量??梢允褂靡幌盗蓄A(yù)定義的函數(shù)和方法,例如pm.test()、pm.expect()和pm.sendRequest()等。
?1.2 預(yù)請(qǐng)求腳本
預(yù)請(qǐng)求腳本是在請(qǐng)求被發(fā)送之前運(yùn)行的腳本。它可以用于設(shè)置請(qǐng)求頭、參數(shù)和身份驗(yàn)證,以確保請(qǐng)求被正確設(shè)置。它可以訪問請(qǐng)求對(duì)象和Postman的全局變量和環(huán)境變量。
預(yù)請(qǐng)求腳本是可選的,但它們對(duì)于確保請(qǐng)求的正確性非常有用。
1.3 測試集合
測試集合是一組API測試的集合??梢詫y試腳本和預(yù)請(qǐng)求腳本組合在一起,以創(chuàng)建測試集合。測試集合可以運(yùn)行一系列的測試腳本,并報(bào)告測試結(jié)果。
測試集合可以使用Postman的測試運(yùn)行器進(jìn)行執(zhí)行。測試運(yùn)行器提供了多個(gè)選項(xiàng),例如選擇環(huán)境和設(shè)置運(yùn)行參數(shù)。它還可以生成報(bào)告,以幫助您識(shí)別API中的錯(cuò)誤和缺陷。
1.4 持續(xù)集成
Postman可以與持續(xù)集成(CI)工具集成,例如Jenkins、Travis CI和CircleCI等。這樣,可以將API測試自動(dòng)化為CI/CD管道的一部分,以確保代碼更改不會(huì)破壞API的功能。
通過與CI工具集成,可以自動(dòng)運(yùn)行測試集合,并在測試失敗時(shí)通知開發(fā)人員。
總之,Postman提供了強(qiáng)大的API測試自動(dòng)化功能,包括測試腳本、預(yù)請(qǐng)求腳本、測試集合和持續(xù)集成。這些功能可以幫助開發(fā)人員在開發(fā)和部署API時(shí)提高測試效率和測試覆蓋率。
2.測試腳本功能
2.1 測試腳本的種類
(1)全局測試腳本
全局測試腳本可以在整個(gè)Postman應(yīng)用程序中使用。在Postman中,選擇“Settings”菜單,然后選擇“General”選項(xiàng)卡。在“General”選項(xiàng)卡中,可以設(shè)置全局測試腳本。全局測試腳本可以用于設(shè)置所有請(qǐng)求共有的測試腳本。在測試腳本中,可以編寫JavaScript代碼進(jìn)行斷言、驗(yàn)證、數(shù)據(jù)處理等操作。
(2)請(qǐng)求測試腳本
請(qǐng)求測試腳本只適用于當(dāng)前請(qǐng)求。在Postman中,選擇一個(gè)請(qǐng)求并選擇“Tests”選項(xiàng)卡。在測試編輯器中,可以編寫請(qǐng)求測試腳本。請(qǐng)求測試腳本可以用于設(shè)置當(dāng)前請(qǐng)求特有的測試腳本。
2.2 測試腳本的使用用例
使用測試腳本功能可以通過編寫JavaScript代碼來自動(dòng)化測試API的響應(yīng)和驗(yàn)證。以下是使用測試腳本的步驟:
1. 打開Postman并創(chuàng)建一個(gè)新的請(qǐng)求。
2. 選擇“Tests”選項(xiàng)卡,打開測試編輯器。
3. 在測試編輯器中,可以使用JavaScript編寫測試腳本。例如,下面是一個(gè)使用pm.test()函數(shù)驗(yàn)證響應(yīng)狀態(tài)碼的示例:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
發(fā)起請(qǐng)求的接口及響應(yīng)碼:
根據(jù)響應(yīng)狀態(tài)碼不同, pm.response.to.have.status(狀態(tài)碼) 會(huì)執(zhí)行對(duì)應(yīng)的腳本,在 Test Results 打印設(shè)定的腳本內(nèi)容。
4. 可以使用pm.expect()函數(shù)進(jìn)行其他類型的驗(yàn)證。例如,下面是一個(gè)使用pm.expect()函數(shù)驗(yàn)證響應(yīng)JSON中是否包含特定的屬性:
pm.test("Response has property 'data'", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('data');
});
發(fā)起請(qǐng)求,接口返回的有 data 屬性,
符合腳本中包含特定屬性的要求,Test Results打印設(shè)定的腳本內(nèi)容
?5. 在測試腳本中,還可以使用Postman的全局變量和環(huán)境變量。例如,可以使用環(huán)境變量中的值來驗(yàn)證響應(yīng)JSON中的屬性:
pm.test("Response has correct name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.equal(pm.environment.get("expected_name"));
});
設(shè)定腳本
請(qǐng)求接口后,驗(yàn)證環(huán)境變量執(zhí)行腳本內(nèi)容
6. 編寫完成測試腳本后,點(diǎn)擊“Send”按鈕發(fā)送請(qǐng)求并運(yùn)行測試腳本。
7. 在測試結(jié)果面板中,可以查看測試的結(jié)果。如果測試失敗,可以查看錯(cuò)誤信息并進(jìn)行修復(fù)。
總之,使用測試腳本功能可以自動(dòng)化測試API的響應(yīng)和驗(yàn)證,以提高測試效率和測試覆蓋率。
3. 預(yù)請(qǐng)求腳本
3.1 預(yù)請(qǐng)求腳本的種類
在Postman中,預(yù)請(qǐng)求腳本有兩種類型:全局預(yù)請(qǐng)求腳本和請(qǐng)求預(yù)請(qǐng)求腳本。它們的區(qū)別在于它們所在的作用域。
(1)全局預(yù)請(qǐng)求腳本
全局預(yù)請(qǐng)求腳本可以在整個(gè)Postman應(yīng)用程序中使用。在Postman中,選擇“Settings”菜單,然后選擇“General”選項(xiàng)卡。在“General”選項(xiàng)卡中,可以設(shè)置全局預(yù)請(qǐng)求腳本。全局預(yù)請(qǐng)求腳本可以用于設(shè)置所有請(qǐng)求共有的參數(shù)、驗(yàn)證等操作。
(2)請(qǐng)求預(yù)請(qǐng)求腳本
請(qǐng)求預(yù)請(qǐng)求腳本只適用于當(dāng)前請(qǐng)求。在Postman中,選擇一個(gè)請(qǐng)求并選擇“Pre-request Scripts”選項(xiàng)卡。在預(yù)請(qǐng)求編輯器中,可以編寫請(qǐng)求預(yù)請(qǐng)求腳本。請(qǐng)求預(yù)請(qǐng)求腳本可以用于設(shè)置當(dāng)前請(qǐng)求特有的參數(shù)、驗(yàn)證等操作。
總之,全局預(yù)請(qǐng)求腳本可以在整個(gè)Postman應(yīng)用程序中使用,而請(qǐng)求預(yù)請(qǐng)求腳本只適用于當(dāng)前請(qǐng)求。在編寫預(yù)請(qǐng)求腳本時(shí),需要根據(jù)請(qǐng)求的特定情況編寫相應(yīng)的預(yù)請(qǐng)求腳本。
3.2 預(yù)請(qǐng)求腳本使用用例
預(yù)請(qǐng)求腳本(Pre-request Scripts)是Postman中一個(gè)功能強(qiáng)大的工具,可以在發(fā)送實(shí)際請(qǐng)求之前運(yùn)行JavaScript代碼。預(yù)請(qǐng)求腳本可以用于設(shè)置請(qǐng)求頭、參數(shù)、驗(yàn)證等操作。以下是使用預(yù)請(qǐng)求腳本的步驟:
(1)打開Postman并創(chuàng)建一個(gè)新的請(qǐng)求。
(2)選擇“Pre-request Scripts”選項(xiàng)卡,打開預(yù)請(qǐng)求編輯器。
(3)在預(yù)請(qǐng)求編輯器中,可以使用JavaScript編寫預(yù)請(qǐng)求腳本。例如,下面是一個(gè)使用pm.environment.set()函數(shù)設(shè)置環(huán)境變量的示例:
pm.environment.set("api_key", "my_api_key");
?(4)可以在預(yù)請(qǐng)求腳本中使用Postman的全局變量和環(huán)境變量。例如,可以使用全局變量來設(shè)置請(qǐng)求頭:
pm.request.headers.add({
key: 'Authorization',
value: 'Bearer ' + pm.globals.get('access_token')
});
(5)在預(yù)請(qǐng)求腳本中還可以使用Postman的其他函數(shù),例如pm.variables.set()、pm.expect()等。例如,可以使用pm.expect()函數(shù)驗(yàn)證請(qǐng)求參數(shù):
pm.expect(pm.request.url.query.has("id")).to.be.true;
(6)編寫完成預(yù)請(qǐng)求腳本后,點(diǎn)擊“Send”按鈕發(fā)送請(qǐng)求。Postman將在發(fā)送實(shí)際請(qǐng)求之前運(yùn)行預(yù)請(qǐng)求腳本。
總之,使用預(yù)請(qǐng)求腳本可以在發(fā)送實(shí)際請(qǐng)求之前運(yùn)行JavaScript代碼,以設(shè)置請(qǐng)求頭、參數(shù)、驗(yàn)證等操作。在編寫預(yù)請(qǐng)求腳本時(shí),需要根據(jù)請(qǐng)求的特定情況編寫相應(yīng)的預(yù)請(qǐng)求腳本。
3.3 怎么使用預(yù)請(qǐng)求腳本和SpringBoot接口做測試
要使用預(yù)請(qǐng)求腳本和Spring Boot接口進(jìn)行測試,可以按照以下步驟操作:
(1)打開Postman,創(chuàng)建一個(gè)新的請(qǐng)求,并選擇請(qǐng)求方法(例如GET、POST、PUT等)。
(2)在請(qǐng)求的“Pre-request Scripts”選項(xiàng)卡中編寫預(yù)請(qǐng)求腳本。在預(yù)請(qǐng)求腳本中,可以設(shè)置請(qǐng)求頭、請(qǐng)求參數(shù)等信息。例如,下面是一個(gè)設(shè)置Authorization請(qǐng)求頭的示例代碼:
pm.request.headers.add({
key: 'Authorization',
value: 'Bearer ' + pm.environment.get('access_token')
});
(3)在請(qǐng)求的“Body”選項(xiàng)卡中設(shè)置請(qǐng)求體。根據(jù)請(qǐng)求的類型,可以選擇“form-data”、“x-www-form-urlencoded”、“raw”等格式。
(4)在請(qǐng)求的“Tests”選項(xiàng)卡中編寫測試腳本。在測試腳本中,可以使用斷言函數(shù)進(jìn)行測試結(jié)果驗(yàn)證。例如,下面是一個(gè)使用pm.expect()函數(shù)驗(yàn)證請(qǐng)求結(jié)果的示例代碼:
pm.test("Response should be 200 OK", function () {
pm.response.to.have.status(200);
});
(5)發(fā)送請(qǐng)求,并查看測試結(jié)果。如果測試結(jié)果符合預(yù)期,則說明接口測試成功。
需要注意的是,預(yù)請(qǐng)求腳本和測試腳本都是基于JavaScript編寫的。在編寫腳本時(shí),需要注意語法和API的使用。此外,需要根據(jù)Spring Boot接口的具體情況編寫相應(yīng)的預(yù)請(qǐng)求腳本和測試腳本,以確保測試的準(zhǔn)確性和可靠性。
4. 測試集合功能
使用測試集合功能可以將多個(gè)測試腳本組合在一起,并且可以在單個(gè)操作中運(yùn)行所有測試。以下是使用測試集合功能的步驟:
(1)在Postman中,創(chuàng)建多個(gè)請(qǐng)求并設(shè)置它們的測試腳本。
(2)在左側(cè)導(dǎo)航欄中,選擇“New Collection”創(chuàng)建一個(gè)新的測試集合。將所有相關(guān)的請(qǐng)求添加到測試集合中,以便它們可以一起進(jìn)行測試。
(3)在測試集合的“Tests”選項(xiàng)卡中編寫測試集合腳本。測試集合腳本可以用于設(shè)置所有請(qǐng)求共有的測試腳本。在測試集合腳本中,可以使用JavaScript編寫測試腳本和斷言函數(shù),對(duì)請(qǐng)求結(jié)果進(jìn)行驗(yàn)證。例如,下面是一個(gè)測試集合腳本示例,用于驗(yàn)證所有請(qǐng)求的響應(yīng)時(shí)間是否小于200ms:
// Verify that all requests have a response time less than 200ms
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
(4)保存測試集合并運(yùn)行測試。在運(yùn)行測試之前,可以選擇一個(gè)環(huán)境來設(shè)置變量和環(huán)境參數(shù)。測試結(jié)果將在Postman的“Tests Results”選項(xiàng)卡中顯示。如果所有測試通過,則測試集合將標(biāo)記為“Pass”。
通過使用測試集合功能,可以將多個(gè)測試腳本組合在一起,以便在單個(gè)操作中運(yùn)行所有測試,并且可以更容易地管理和維護(hù)測試用例。
5. 持續(xù)集成功能
5.1 Postman的持續(xù)集成有什么功能?具體怎么使用
Postman的持續(xù)集成(Continuous Integration,CI)功能主要包括以下三個(gè)部分:
(1)Postman API:Postman API可以與CI工具進(jìn)行集成,實(shí)現(xiàn)自動(dòng)化測試和持續(xù)集成。通過Postman API,可以運(yùn)行Postman測試集合并獲取測試結(jié)果。
(2)Newman命令行工具:Newman是Postman的命令行工具,可以在CI工具中使用。通過Newman,可以在命令行中運(yùn)行Postman測試集合,并將測試結(jié)果輸出為JUnit XML格式或HTML格式。
(3)Postman代理:Postman代理可以在CI工具中使用,以便在CI工具中設(shè)置環(huán)境變量和授權(quán)頭。代理可以確保環(huán)境變量和授權(quán)頭在測試過程中正確地設(shè)置。
使用Postman的持續(xù)集成功能,可以將Postman測試集合與CI工具集成在一起,實(shí)現(xiàn)自動(dòng)化測試和持續(xù)集成。以下是一般的使用步驟:
-
將Postman測試集合導(dǎo)出為JSON文件,并將其上傳到代碼倉庫中。
-
在CI工具中配置Postman的自動(dòng)化測試。例如,可以使用Jenkins或Travis CI等工具。配置中需要包括測試集合的路徑和環(huán)境變量。
-
在CI工具中運(yùn)行Postman測試集合??梢允褂肗ewman命令行工具來運(yùn)行測試集合,并輸出測試結(jié)果。例如,在Jenkins中可以使用以下命令運(yùn)行測試集合:
newman run my-collection.json -e my-environment.json -r junit,html
- 分析測試結(jié)果并根據(jù)需要進(jìn)行修復(fù)和調(diào)整。如果測試結(jié)果中包含失敗的測試用例,則需要修復(fù)代碼并重新提交到代碼倉庫中。
使用Postman的持續(xù)集成功能可以加快軟件開發(fā)的速度,并提高代碼的質(zhì)量和穩(wěn)定性。
5.2 持續(xù)集成用例
假設(shè)我們有一個(gè)Spring Boot應(yīng)用程序,該應(yīng)用程序提供了一個(gè)REST API,用于獲取用戶的詳細(xì)信息。我們想要使用Postman持續(xù)集成來測試該API,并在代碼倉庫中進(jìn)行自動(dòng)化測試和持續(xù)集成。
(1)創(chuàng)建一個(gè)新的Postman測試集合,并添加一個(gè)測試用例,以測試Spring Boot應(yīng)用程序的REST API。測試用例可以使用Postman的請(qǐng)求構(gòu)建器來創(chuàng)建,包括請(qǐng)求URL、請(qǐng)求方法、請(qǐng)求頭、請(qǐng)求體等。
(2)在測試用例中添加測試腳本,以驗(yàn)證API返回的響應(yīng)是否正確。例如,可以使用JavaScript編寫一個(gè)測試腳本,檢查API返回的用戶詳細(xì)信息是否正確。
pm.test("Response is OK", function () {
pm.response.to.have.status(200);
});
pm.test("User name is correct", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.name).to.eql("John Doe");
});
pm.test("User age is correct", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.age).to.eql(30);
});
(3)將測試集合導(dǎo)出為JSON文件,并將其上傳到代碼倉庫中。
(4)在CI工具中配置Postman的自動(dòng)化測試。例如,在Jenkins中可以使用以下步驟:
- 安裝Node.js和Newman命令行工具。
- 設(shè)置環(huán)境變量,以便Newman命令行工具可以在CI工具中正確運(yùn)行。例如,在Jenkins中可以使用以下命令:
export PATH=$PATH:/usr/local/bin
- 在Jenkins中創(chuàng)建一個(gè)新的構(gòu)建任務(wù),并添加以下構(gòu)建步驟:
newman run my-collection.json -e my-environment.json -r junit,html
此命令將運(yùn)行Postman測試集合,并使用my-environment.json文件中定義的環(huán)境變量。測試結(jié)果將輸出為JUnit XML格式和HTML格式。
(5)運(yùn)行CI工具中的構(gòu)建任務(wù),以運(yùn)行Postman測試集合并獲取測試結(jié)果。如果測試結(jié)果中包含失敗的測試用例,則需要修復(fù)代碼并重新提交到代碼倉庫中。
使用Postman持續(xù)集成可以加快軟件開發(fā)的速度,并提高代碼的質(zhì)量和穩(wěn)定性。通過使用Postman的自動(dòng)化測試和持續(xù)集成功能,我們可以在代碼倉庫中進(jìn)行自動(dòng)化測試,并確保代碼變更不會(huì)破壞現(xiàn)有的功能。
6. 斷言
6.1 什么是斷言
在自動(dòng)化測試中,斷言是一種用于驗(yàn)證測試結(jié)果的技術(shù)。它是一種檢查條件是否滿足的機(jī)制,如果條件不滿足,則測試失敗。斷言通常用于自動(dòng)化測試框架中,以確保測試的可靠性和一致性。
在Postman中,可以使用JavaScript編寫測試腳本,并使用斷言來驗(yàn)證API的響應(yīng)是否正確。以下是一些常用的斷言:
-
pm.expect(value).to.eql(expectedValue)
:檢查value和expectedValue是否相等。 -
pm.expect(value).to.be.above(expectedValue)
:檢查value是否大于expectedValue。 -
pm.expect(value).to.be.below(expectedValue)
:檢查value是否小于expectedValue。 -
pm.expect(value).to.be.ok
:檢查value是否為真。 -
pm.expect(value).to.have.property(propertyName, expectedValue)
:檢查對(duì)象value是否具有屬性propertyName,并且該屬性的值是否等于expectedValue。 -
pm.expect(value).to.have.length(expectedLength)
:檢查數(shù)組value的長度是否等于expectedLength。 -
pm.expect(value).to.match(pattern)
:檢查value是否與指定的正則表達(dá)式pattern匹配。 -
pm.expect(value).to.be.oneOf(expectedValues)
:檢查value是否與expectedValues中的任何一個(gè)值相等。
可以根據(jù)需要使用這些斷言,驗(yàn)證API的響應(yīng)是否正確。在編寫測試腳本時(shí),應(yīng)該根據(jù)API的特性和預(yù)期結(jié)果選擇合適的斷言,以確保測試結(jié)果的可靠性和一致性。
6.2 斷言的使用方式
在Postman中使用斷言非常簡單。您可以按照以下步驟使用斷言:
-
首先,打開Postman并選擇要測試的API。
-
然后,在請(qǐng)求的"Tests"選項(xiàng)卡下,可以添加測試腳本。
-
在測試腳本中,您可以使用JavaScript編寫斷言來驗(yàn)證API的響應(yīng)是否符合預(yù)期。
以下是一個(gè)簡單的示例,展示如何使用斷言來驗(yàn)證API的響應(yīng)是否為JSON格式:
// 獲取響應(yīng)內(nèi)容
const responseBody = pm.response.json();
// 驗(yàn)證響應(yīng)是否為JSON格式
pm.test("響應(yīng)應(yīng)該是JSON格式", function () {
pm.expect(responseBody).to.be.an("object");
});
在上面的示例中,我們首先使用pm.response.json()
獲取API的響應(yīng)內(nèi)容,然后使用pm.test()
和pm.expect()
來編寫斷言。在pm.expect()
中,我們使用to.be.an()
斷言來驗(yàn)證響應(yīng)是否為JavaScript對(duì)象。文章來源:http://www.zghlxwxcb.cn/news/detail-756378.html
除了to.be.an()
之外,Postman還提供了許多其他的斷言,例如to.eql()
、to.have.status()
等等。您可以根據(jù)需要選擇合適的斷言來驗(yàn)證API的響應(yīng)是否符合預(yù)期。文章來源地址http://www.zghlxwxcb.cn/news/detail-756378.html
到了這里,關(guān)于PostMan筆記(三)自動(dòng)化測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!