自動化測試
傳統的接口自動化測試成本高,大量的項目沒有使用自動化測試保證接口的質量,僅僅依靠手動測試,是非常不可靠和容易出錯的。
為了解決這個問題,使用YAPI接口自動化測試功能,只需要配置每個接口的入參和對 RESPONSE 斷言,即可實現對接口的自動化測試,大大提升了接口測試的效率。
第一步,測試集合
使用 YApi 自動化測試,第一步需要做得是創建測試集合和導入接口,點擊添加集合創建,創建完成后導入接口(同一個接口可以多次導入)。
第二步,編輯測試用例
編寫測試用例主要涉及兩個方面,一個是請求參數,另外一個是斷言腳本。
編輯請求參數
請求參數可以填寫期望的字符串,YApi 還提供了 Mock 參數和 變量參數。Mock參數用來生成隨機字符串,變量參數是為了解決請求參數依賴其他接口的返回數據或參數。
Mock 參數
Mock 參數每次請求都會生成隨機字符串
變量參數
YApi 提供了強大的變量參數功能,你可以在測試的時候使用前面接口的 參數 或 返回值 作為 后面接口的參數,即使接口之間存在依賴,也可以輕松 一鍵測試~
Tips: 參數只能是測試過程中排在前面的接口中的變量參數
格式:
$.{key}.{params|body}.{path}
例如:現有兩個接口,分別是“導航標題”和“文章列表”
文章列表接口需要傳參數: 當前標題(id),而這個 id 需要通過 導航標題 的返回值獲取,這時應在 文章列表 的參數輸入框中根據前者的 key 找到對應 id。
導航標題 的參數和返回值有如下結構:
參數:
返回值:
則 文章列表 的參數可以如下配置:
其中 $. 是使用 動態變量 的標志,$.269.params 即表示 key 值為 269 用例的請求參數,$.269.body 即表示 key 值為 269 用例的返回值。
如果 requestBody 是 json 格式也可以在 json 中寫變量參數,如下圖:
Tips: 上下拖動測試集合的列表項可以調整測試的順序。
目前 yapi 中的query,body,header和pathParam的輸入參數已經支持點擊選擇功能。無需自己填寫表達式,只需在彈窗中選擇需要展示的表達式即可。
輸入選項包括常量,mock數據,在測試集合中也支持變量選擇。具體用法:單擊編輯按鈕打開表達式生成器,點擊需要的數據創建表達式,這里也可以實時查看表達式結果。
Tips: 在測試集合中插入變量參數可以會出現下圖的提示信息,這是正常現象。因為該參數只能在各個接口順序執行的時候才能拉到變量參數中的值
編寫斷言腳本
編寫完請求參數,可通過 js 腳本寫斷言,實現精准測試,在接口用例頁面點擊 Test 編輯。
第三步,運行自動化測試
在測試列表可以看到每個測試用例的 key,還有 開始測試、報告等功能
點擊開始測試會按照 case 定義的參數從上往下一個一個進行測試,如果順序有問題,可以拖動調整
測試完成之后,點擊報告查看該次請求的結果
斷言腳本公共變量
1.assert
常用 api
-
assert(value)
判斷 value 是否為 truth, 例如 assert(1) 通過, assert(0) 不通過,只要 value 不是 null, 0, false 等值驗證通過
-
assert.equal(actual, expected)
判斷 actual 是否等於 expected,例如 assert(1, 1)通過
-
assert.notEqual(actual, expected)
判斷 actual 是否不等於 expected
-
assert.deepEqual(actual, expected)
假設: actual = {a:1} 是一個對象,即便 expected = {a:1},如果使用 assert.equal 可能也是不相等的,因為在 js 引用的只是對象的一個指針,需要使用 assert.deepEqual 比較兩個對象是否相等
-
assert.notDeepEaual(actual, expected)
深度比較兩個對象是否不相等
2.status
http 狀態碼
3.params
http request params, 合並了 query 和 body
4.body
返回 response body
5.header
返回 response header
6.records
記錄的 http 請求信息,假設需要獲取 key 為 555 的接口參數或者響應數據,可通過 records[555].params 或 records[555].body 獲取
7.log
log(message) 函數,調試時使用,log 信息僅僅在斷言失敗后打印,失敗斷言前的信息
log(234) assert.equal(status, 400)log(123)
輸出結果: log: 234
AssertionError: 200 == 400
示例 assert.equal(body.errcode, 0) assert.equal(body.data.group_name, 'testGroup') assert.equal(status, 200)
服務端自動化測試
開始測試功能是在瀏覽器跑自動化測試,他依賴於瀏覽器的使用環境。服務端自動化測試功能是在YApi服務端跑自動化測試,不需要依賴瀏覽器環境,只需要訪問 YApi 提供的 url 鏈接就能跑自動化測試,非常的簡單易用,而且可以集成到 jenkins。
詳細使用方法
點擊服務端測試,出現如下彈窗,用戶訪問該 url 就可以獲取當前測試用例的所有測試結果。
配置通用規則
配置通用規則能夠使自動化測試,可以基於通用的規則去控制,無需手動一個一個維護case.
Jenkins操作
1.點擊示例工程api-auto-test
3.構建成功
4.點擊控制台輸出
5.查看報告