一. 背景html
數據驅動Data Driven Testing(DDT),是一種用於建立自動化測試的方法,或者說是一種架構, 本質是輸入數據和用這些數據獲取測試結果, 使測試邏輯和測試數據分離.正則表達式
DDT的優勢是測試工程師沒必要爲每個輸入數據建立一個單獨的測試用例, 測試在一個實例中建立, 而且輸入測試數據和預期結果在表格文件中獲取.數據庫
二. Jmeter 數據驅動api
首先建立url.csv文件做爲輸入測試數據, 內容以下:微信
以上內容保存退出後也能夠用文本編輯器編輯, 注意標點符號架構
我是mac os, 保存目錄爲/Users/louiezhou/home/url.csvapp
csv數據設置文件中要用到這個路徑編輯器
被測接口以下:ide
get方法: https://postman-echo.com/get?foo1=bar1 post
post方法: https://postman-echo.com/post 入參{"foo1":"bar1","foo2":"bar2"}
API文檔來源: https://docs.postman-echo.com/?version=latest#078883ea-ac9e-842e-8f41-784b59a33722
接下來到jmeter裏, 首先建立一個線程組
在該線程組下建立一個普通http請求, 命名爲postman-echo_header, 用於和數據驅動比較
添加一個循環控制器
循環數量和數據表格文件中用例數量推薦保持一致.
在循環控制器下添加csv 數據文件設置
在循環控制器下添加if 控制器,命名爲if_get
jmeter 5.0 + 版本, if控制器和old version 略有不一樣.
此處添加if主要是判斷若是是get方法就走這個if_get控制器, 若是是post方法, 就走if_post控制器.
在if_get控制器下添加一個http請求
命名規則爲: ${caseSeq}_${apiSeq}_${apiName}
用例編號_API版本_API名稱, 這樣命名更爲直觀,便於理解
${apiType} =https 爲API請求協議
${host} =postman-echo.com 在用戶自定義變量中定義
${url}=/get
${param}= foo1=bar1
拼接完整的是: https://postman-echo.com/get?foo1=bar1
再來看if控制器的if_post
仍然是在循環控制器下新建一個if控制器,命名爲if_post
在if_post下新建一個http請求, 命名規則同if_get下http一致
${param}={「foo1」:」bar1」, 「foo2」:」bar2」}
拼接完整的請求是:
https://postman-echo.com/post
POST data:
{"foo1":"bar1","foo2":"bar2"}
由於是post方式, 入參方式與get有所區別, 所以還須要在該http下聲明一個http信息管理頭
主流程到這裏就完成了, 接下來看下零碎的地方
給每一個http請求加上斷言
雖然他們的預期值都是變量${expectValue}, 但實際值是不一樣的
用例C001的預期值:${expectValue}: foo1=bar1
用例C002的預期值${expectValue}:foo2=bar2
用例C003的預期值${expectValue}: {「foo1」:」bar1」,」foo2」:」bar2」}
再來看下用戶自定義變量
目錄層級結構
添加相應的監聽便可執行了.
接下來看執行結果
在數據表格文件中還有些參數沒有用到, 好比priority字段, 能夠根據需求適當添加相應判斷, 本篇幅僅爲拋磚引玉, 如您有更好的idea, 歡迎拋過來.
最後來一碗雞湯:
你如今的生活水平,是你三年前的工做狀態決定的;而你如今的努力程度,會決定你三年後的生活;軟件行業是個逆水行舟,不進則退的行業,既然選擇了這個行業,那麼就要努力地「敲」下去。
今日精選推薦
諮詢工做加微信
掃描二維碼
歡迎自薦和推薦, 須要的微信推送簡歷!
請猛戳下面二維碼瞭解更多