基於postman的api自動化測試實踐

測試的好處

每一個人都贊成測試很重要,但並非全部人都會去作。每當你添加新的代碼,測試能夠保證你的api按照預期運行。經過postman,你能夠爲全部api編寫和運行測試腳本。html

postman中的測試

在postman中,你能夠經過添加腳本到請求當中,來使用動態變量、在請求之間傳遞數據以及編寫測試。寫在Pre-request Scripttab中的代碼會在請求發送以前執行,而寫在Teststab中的代碼會在響應到達以後執行。前端

測試用的語言是JavaScript。因此對於前端開發者來講幾乎沒有學習成本。對於一個單獨的請求來講,若是它有測試腳本,那麼在請求發送以後,在 Test Resultstab能夠看到對應的測試結果。另外爲了能夠快速編寫測試腳本,postman提供了一些通用的代碼片斷(code snippets)。以下是對應的功能結構圖:

編寫測試

例子:

pm.test("response is ok", function () {
    pm.response.to.have.status(200);
});


pm.test("environment to be production", function () { 
    pm.expect(pm.environment.get("env")).to.equal("production");
});

pm.test("response must be valid and have a body", function () {
     pm.response.to.be.ok;
     pm.response.to.be.withBody;
     pm.response.to.be.json;
});

var schema = {
	type: 'object',
	properties: {
		appID: {
			type: 'number',
		},
		avatar: {
			type: 'string',
		}
	}
}
pm.test('Schema is valid', function() {
  var jsonData = pm.response.json().data;
  pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});
複製代碼

pm.test()

爲了遵循postman的規範,全部測試代碼必須寫在pm.test()的function裏面。第一個參數是該測試的名稱,第二個參數是一個返回boolean值的函數。也就是說這個函數若是返回true,表示測試經過,不然測試失敗。web

pm.expect()

這個斷言函數是基於一個JavaScript測試庫ChaiJS BDD構建的。經過相似的語法,你能夠很方便的對響應裏的數據或者一些變量進行斷言。npm

pm.response.to.be.*

這個對象能夠提供對響應常見的檢查。如狀態碼是否符合預期等。json

tv4.validate()

第一個參數是被檢驗的數據,第二個參數是json schema。經過則返回true,失敗則返回false。若是要快速學習json的schema規範,能夠參考https://www.jianshu.com/p/8278eb2458c4?winzoom=1 tv4是postman一個內置的json validator。它基於json-schema draft v4,經過豐富的校驗語法來校驗簡單的值或者複雜的json對象。api


經常使用api詳情請查看https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_referencebash

運行測試

咱們一般會給多個api運行測試,由於咱們有不少api,或者一個測試場景由多個api所組成。因此咱們會把他們添加到一個集合(Collections)當中來運行。app

postman(用戶界面)

這裏注意,請求是按照Collections當中的順序線性執行。若是想改變執行順序,能夠修改Collections中的順序,或者使用postman.setNextRequest("request_name");若是想要中止整個流程,能夠執行postman.setNextRequest(null);函數

newman(命令行工具)

1.從postman當中導出爲json格式的Collections工具

2.全局安裝newman, npm install -g newman 3.執行命令, newman run sample-collection.json

詳細使用方法請查看,newman

結合Jenkins自動化

一個通用的方案是在代碼在提交後,或者合入倉庫分支後,執行 newman -c jenkins_demo.postman_collection --exitCode 1。注意到--exitCode參數,這是爲了告訴Jenkins,若是測試失敗,將會返回值爲1的退出碼。這樣就Jenkins就能夠得知測試運行的成功與否了。

總結

咱們都知道,工欲善其事必先利其器。對於基於api的測試而言,postman不失爲一個不錯的工具。另外對於web開發人員來講,postman也是一個經常使用的http調試工具。熟練的掌握它,也能必定程度地提升咱們的工做效率。

相關文章
相關標籤/搜索