繼續(xù)來(lái)看上一篇提出的問(wèn)題,如果執(zhí)行用例需要用到大量數(shù)據(jù),比如獲取多個(gè)不同城市的天氣情況,這個(gè)數(shù)據(jù)如何提供?
熟悉自動(dòng)化測(cè)試或者性能測(cè)試的同志應(yīng)該有點(diǎn)思路方向了,像這類的數(shù)據(jù)基本都是在工具之外提供,很少在工具內(nèi)部造數(shù)據(jù)批量執(zhí)行用例。這就是所謂的數(shù)據(jù)與腳本分離。
在工具外部造數(shù)據(jù)有很多方式,如 excel 文件、csv 文件、xml 文件、json 文件、txt 文件和數(shù)據(jù)庫(kù)等等,但也不是所有工具都可以使用上面的方式準(zhǔn)備數(shù)據(jù)去調(diào)用,最終選取哪種方式這個(gè)還得考慮工具本身是否支持調(diào)用該種格式的文件數(shù)據(jù)。
Postman目前支持導(dǎo)入外部的數(shù)據(jù)文件格式有 json 和 csv 兩種,以后會(huì)不會(huì)支持更多的文件格式這個(gè)還不得而知。這里,我們先來(lái)學(xué)習(xí)調(diào)用 csv 格式的數(shù)據(jù)。
1、創(chuàng)建 csv 文件數(shù)據(jù)
創(chuàng)建 csv 文件(操作簡(jiǎn)單這里就不詳細(xì)講了)
-
在 csv 文件內(nèi)創(chuàng)建測(cè)試數(shù)據(jù)(我們承接前面的腳本,創(chuàng)建一列 test_location 的測(cè)試數(shù)據(jù))
2、修改斷言
有些人可能有疑問(wèn),為什么又要修改斷言,上面不是調(diào)試好了嗎?
想想上面斷言調(diào)用的 test_location 變量值是從何處而來(lái)的?對(duì),調(diào)用的是 Postman 全局變量。從 csv 文件調(diào)用變量值和從 Postman 調(diào)用全局變量值的寫法不一樣,外部文件的數(shù)據(jù)導(dǎo)入到 Postman 中后默認(rèn)存放在一個(gè)名稱為 data 的對(duì)象中,所以想用 csv 文件中的變量需要從 data 中調(diào)用。下面是斷言的腳本:
// 從csv文件獲取test_location變量值
// 打印 test_location 值到控制臺(tái)
console.log("test_location的值是:" + data.test_location);
var jsonData = JSON.parse(responseBody);
tests["檢查城市名稱"] = jsonData.results[0].location.name === data.test_location;
3、運(yùn)行 collection
要獲取多個(gè)城市的天氣情況,可以多次循環(huán)運(yùn)行上面的腳本,每次運(yùn)行獲取一個(gè)城市的天氣情況。循環(huán)運(yùn)行腳本在 Runner 的模式下進(jìn)行,所以在循環(huán)運(yùn)行腳本之前要先切換到 Runner 模式。
點(diǎn)擊上面的 Run 按鈕后會(huì)出現(xiàn)一個(gè)新的窗口,窗口頁(yè)面有比較多的選項(xiàng)設(shè)置,直接看圖吧。
選擇了 csv 文件后,我們可以看到 Data 下面多了一行 Data File Type ,顯示了文件的格式類型,另外旁邊還有一個(gè) Preview 按鈕,點(diǎn)擊按鈕可以預(yù)覽 csv 文件中的測(cè)試數(shù)據(jù)。
如果預(yù)覽數(shù)據(jù)時(shí)出現(xiàn)亂碼,可以用 Notepad++ 軟件打開查看文件內(nèi)容編碼格式是否為 UTF-8 ,如果不是則轉(zhuǎn)換成 UTF-8 無(wú) BOM 編碼格式保存即可。
4、Run Results
所有選項(xiàng)設(shè)置完成后,我們把 console 控制臺(tái)打開,方便查看 log 信息。
點(diǎn)擊底部藍(lán)色 Run 運(yùn)行按鈕,等待運(yùn)行完后會(huì)看到測(cè)試結(jié)果頁(yè)面。
結(jié)果顯示全部測(cè)試通過(guò),接著看一下 console 控制臺(tái)的 log 信息。
從控制臺(tái)的 log 信息可以看出測(cè)試使用的數(shù)據(jù)是從 csv 文件調(diào)用的。
到這里為止, 一個(gè)簡(jiǎn)單的 Postman 工具做接口測(cè)試流程就完了。