愈來愈多的應用基於先後端分離構建,後端提供數據接口,前端調用接口返回 json 數據渲染到 UI,這個時候保證後端接口數據正確性變的越來越重要,接口測試就是來解決這個問題。不少團隊,接口測試就是手動運行接口,肉眼比對接口返回的數據,這樣的操做流程效率低下,容易出錯。使用 YApi 只須要在可視化 GUI 下,配置下每一個接口的入參和對 RESPONSE 斷言,便可實現對接口的自動化測試,大大提高了接口測試的效率。前端
若是您還未部署 yapi 接口管理平臺,可先去示例站點試用。jquery
在建立完項目和接口後,須要進入到測試集頁面,導入須要測試的接口。git
須要學習的基礎概念主要包含測試集、Pre-Script 、Test-Script 三方面。github
在平時的開發過程當中,常常遇到的一個問題是每次調試接口都須要從新填寫參數,YApi測試集可以保存以前填寫的參數,方便下次的調試。每一個的請求參數還能夠經過前面已請求的接口數據讀取,或填寫mock隨機字符串,經過設置斷言腳本驗證返回數據的正確性。ajax
在測試列表能夠看到每一個測試用例的 key,還有 開始測試、報告等功能
點擊開始測試會按照 case 定義的參數從上往下一個一個進行測試,若是順序有問題,能夠拖動調整
測試完成以後,點擊報告查看該次請求的結果json
Pre-Script 包括請求參數處理腳本和響應數據處理腳本兩部分。經過自定義 js 腳本方式改變請求的參數和返回的 response 數據。他的使用場景以下:後端
以 jquery ajax 爲例,假設當前的請求參數是api
{ url: '/api/user?id=1', method: 'POST', headers: { xxx: 'xxx' }, data: { type: 1 } }
那麼公共變量 context 包含如下屬性:app
context = { pathname: '/api/user', query: { id: 1 }, requestHeader: { xxx: 'xxx' }, method: 'POST', requestBody: { type:1 } }
假設咱們須要在 url 增長一個 token 參數,能夠寫以下自定義腳本:前後端分離
在上面的示例請求完成後,假設返回 responseBody={a:1},公共變量 context 包含如下屬性:
context = { pathname: '/api/user', query: { id: 1 }, requestHeader: { xxx: 'xxx' }, method: 'POST', requestBody: { type:1 }, responseData: { a:1 }, responseHeader: { content-type: 'application/json' ... } }
假設咱們須要修改響應數據 responseBody a 的值爲 2,能夠填寫以下自定義腳本:
經過自定義腳本斷言接口參數或返回 response 數據,在接口用例頁面點擊 Test 編輯。
判斷 value 是否爲 truth, 例如 assert(1) 經過, assert(0) 不經過,只要 value 不是 null, 0, false等值驗證經過
判斷 actual 是否等於 expected,例如 assert(1, 1)經過
判斷 actual 是否不等於 expected
假設: actual = {a:1} 是一個對象,即使 expected = {a:1},若是使用 assert.equal 可能也是不相等的,由於在 js 引用的只是對象的一個指針,須要使用 assert.deepEqual 比較兩個對象是否相等
深度比較兩個對象是否不相等
http 狀態碼
http request params, 合併了 query 和 body
返回 response body
返回 response header
記錄的 http 請求信息,假設須要獲取 key 爲 555 的接口參數或者響應數據,可經過 records[555].params 或 records[555].body 獲取
log(message) 函數,調試時使用,log 信息僅僅在斷言失敗後打印
assert.equal(body.errcode, 0) assert.equal(body.data.group_name, 'testGroup') assert.equal(status, 200)
YApi 除了支持常量字符串外,還支持 mock 隨機字符串和變量字符串。
Mock 參數每次請求都會生成隨機字符串,支持 mockjs 全部佔位符
YApi 提供了強大的變量參數功能,你能夠在測試的時候使用前面接口的 參數
或 返回值
做爲 後面接口的參數
,即便接口之間存在依賴,也能夠輕鬆 一鍵測試~
格式:
$.{key}.{params|body}.{path}
例如:現有兩個接口,分別是「導航標題」和「文章列表」
文章列表接口須要傳參數: 當前標題(id)
,而這個 id 須要經過 導航標題
的返回值獲取,這時應在 文章列表
的參數輸入框中根據前者的 key 找到對應 id。
導航標題
的參數和返回值有以下結構:
參數:
返回值:
則 文章列表
的參數能夠以下配置:
其中 $.** 是使用 **動態變量** 的標誌,$.269.params 即表示 key 值爲 269 用例的請求參數,$.269.body** 即表示 key 值爲 269 用例的返回值。
Tips: 上下拖動測試集合的列表項能夠調整測試的順序。
目前yapi中的query
,body
,header
和pathParam
的輸入參數已經支持點擊選擇功能。無需本身填寫表達式,只需在彈窗中選擇須要展現的表達式便可。 輸入選項包括常量
,mock數據
,在測試集合中也支持變量
選擇。
具體用法:單擊編輯按鈕打開表達式生成器,點擊須要的數據建立表達式,這裏也能夠實時查看錶達式結果。
YApi 自動化測試大大簡化了接口測試數據準備,和驗證環節,目前去哪兒測試團隊已經開始使用。將來 YApi 將會持續優化自動化測試功能,但願你們提出你們寶貴的意見。
開源接口管理平臺 YApi 官網
Github: YApi github