本文節選自霍格沃玆測試學院內部教材,文末鏈結高階學習!
資料驅動就是資料的改變從而驅動自動化測試的執行,最終引起測試結果的改變。簡單來說,就是引數化的應用。資料量小的測試用例可以使用**的引數化來實現資料驅動,資料量大的情況下建議使用一種結構化的檔案(例如 yaml,json 等)來對資料進行儲存,然後在測試用例中讀取這些資料。
引數化資料驅動原理與之前分享的 介面測試框架實戰(二) | 搞定多環境下的介面測試 大同小異。
本文依然使用@pytest.mark.parametrize
裝飾器來進行引數化,使用引數化來實現資料驅動。
通過引數化的方式,分別判斷 id 為 2,3 的部門的 parentid 為 1:
importpytest
class
testdepartment:
department =department()
@pytest.mark.parametrize("id
", [2, 3])
deftest_department_list(self, id):
r =self.department.list(id)
assert self.department.jsonpath(expr="
$..parentid
")[0] == 1
上面的**首先使用@pytest.mark.parametrize
裝飾器,傳遞了兩組資料,測試結果顯示有兩條測試用例被執行,而不是一條測試用例。也就是 pytest 會將兩組測試資料自動生成兩個對應的測試用例並執行,生成兩條測試結果。
當測試資料量大的情況下,可以考慮把資料儲存在結構化的檔案中。從檔案中讀取出**中所需要格式的資料,傳遞到測試用例中執行。
本次實戰以 yaml 進行演示。yaml 以使用動態字段進行結構化,它以資料為中心,比 excel、csv、json、xml 等更適合做資料驅動。
將上面引數化的兩組資料儲存到 yaml 檔案中,建立乙個data/department_list.yml
檔案,**如下:
- 2- 3
上面的**定義了乙個 yaml 格式的資料檔案department_list.yml
,檔案中定義了乙個列表,列表中有兩個資料,最後生成的是這樣的資料格式:[1,2] 。將測試用例中引數化的資料改造成從department_list.yml
檔案中讀取,**如下:
classtestdepartment:
department =department()
@pytest.mark.parametrize("id
", \
yaml.safe_load(open(
"../data/department_list.yml
")))
deftest_department_list(self, id):
r =self.department.list(id)
assert self.department.jsonpath(expr="
$..parentid
")[0] == 1
上面的**,只需要使用yaml.safe_load()
方法,讀取department_list.yml
檔案中的資料,分別傳入到用例test_department_list()
方法中完成輸入與結果的驗證。
介面測試框架實戰 五 測試資料的資料驅動
本文節選自霍格沃玆測試學院內部教材,高階學習,文末 資料驅動就是資料的改變從而驅動自動化測試的執行,最終引起測試結果的改變。簡單來說,就是引數化的應用。資料量小的測試用例可以使用 的引數化來實現資料驅動,資料量大的情況下建議使用一種結構化的檔案 例如 yaml,json 等 來對資料進行儲存,然後在...
介面測試資料關聯
一 介面自動化的時候,下乙個介面的入參是需從上乙個介面的引數得出,兩個介面的引數需關聯 如下 1 第乙個介面的引數 replace 2 第二介面的引數 tokens 3 第二介面引數中的tok字段值需要從第乙個介面獲取值,可先用這中格式編寫 裡面的token是需從上乙個介面字段獲取值的欄位名 那麼下...
介面測試筆記1 測試資料
1 口自動化測試資料源 2 自動化指令碼中資料型別 3 json格式資料 4 json格式資料實戰 1 excel測試用例 2 yaml格式用例 資料要放在請求 會構建請求 裡面發出 data request 1 表單格式 也叫urlencode格式,也叫form格式,也叫x www form ur...