本文基於robot framework框架,支持http api,robot framework如何使用請參考光毅的另一篇文章
(腳本做了一些修改和更新,更新內容請看part2)
本文主要講,如何分離測試用例和參數
目標:縮減用例編寫成本;提高用例可維護性
參數通過csv表格編寫和維護
背景(可不看)
用robot framework編寫用例的構成:用例+keyword+json結構參數
keyword: 處理邏輯
json文件:存請求數據和預期返回數據
基於如上背景,我們寫一條用例,需要有一個用例代碼,一個json的請求和預期返回
例如,我們的請求有10個參數,一個參數編寫五種不同的測試值,我們需要編寫50個用例,寫50個json請求和返回
上述過程種,存在大量重復工作,且不方便維護,如果請求增加字段,則需要修改全部json體
所以想到了用例和參數分離的方式:模版用例+參數,生成可執行用例
效果:請求有五種預期返回碼,只需要寫一個json請求模版和5個預期返回模版
使用步驟
(流程圖在最后)
(文章末尾更新了使用步驟,可以直接看簡化步驟,細節可以回來看這里)
1.下載代碼到本地(robot framework如何使用請參考文章開頭附的文章)
link: https://git.garena.com/arrow.zhang/httpapiautotest.git
2.編寫一個成功用例(包含用例和一個json請求體和一個預期json返回體)
3.GenerateTest.py是生成,robot用例的腳本,可以copy一個或者在上邊改
4.需要修改內容,是步驟4和步驟5
將TestCaseHeader和TestCaseBody替換成自己用例(寫用例時也按照這個格式寫),紅框處為替換參數名字需要保持不變
5.填寫apilist參數,參數是一個多元數組,一個值表示一個api,一個api包含了api_name,json_file_path,parameter_file_path三個參數
api_name:API的名稱,決定了你生成robot文件的名稱
json_file_path:存儲json請求模版和json預期返回模版的路徑
parameter_file_path:參數文件的路徑
(到這里代碼部分的邏輯已經修改完成,下邊講參數文件的編寫規范)
6.參數文件編寫規范
格式:csv格式,名稱和apilist里的名稱一致,在file文件夾下
參數包含六列:
case_id: 數據的鍵值,不可重復
case_name: 用例名稱
request_template: 請求的模版名稱(與json文件中的模版對應)
request_key:當前需要測試的字段
request_value: 測試字段的值
response_exp: 預期的返回模版
例如:t002號用例,替換請求字段里的signature為“SDFGHJKLTYUIOFGHJK”,預期結果的模版名稱是E103 response
tips:
給request_value做了一些自定義的判斷:
0XRight表示正確請求,不需要替換參數
0XMissing 表示沒有這個字段
int–開頭 表示這個字段要傳int類型
PS:參數文件是要手動編寫,並放入到對應目錄下
整理流程圖:
完成了上邊所有步驟后,后續增加和修改用例,只需要維護csv的表格
如果請求體結構有變化,只需要修改模版文件的json結構體就ok
功能還沒那么完善,有什么意見或者建議請聯系我~~~如果文檔看不明白也請私戳我~
~~~~~~~~~~~~~~~~~~~~~~~~(以下是新修改內容,7月3日)~~~
1.生成腳本做了修改,參數文件格式做了修改
https://docs.google.com/spreadsheets/d/1T48OAyGviZpF3exAQlVZ393gP8H_kU7qN8MHYsyXqo8/edit?usp=sharing
新支持內容:
1.請求可以修改多個字段
2.支持不同格式
3.返回校驗,不用寫Json返回體,直接輸入預期校驗的key和value即可
2.簡化了接入步驟:
a.下載代碼
https://git.garena.com/arrow.zhang/httpapiautotest.git
(因為不能直接設置pulich權限,需要權限的同學私戳我就好)
b.寫一個Json請求體,(參數均正確)
c.按照上述格式編寫用例
d.填寫,Json請求體文件路徑,用例csv.文件路徑,run即可
生成用例腳本如下圖路徑
keyword路徑(處理請求參數替換和返回驗證邏輯)