資料驅動就是通過資料的改變驅動自動化測試的執行,最終引起測試結果的改變。簡單來說,就是引數化在自動化測試中的應用。
測試過程中使用資料驅動的優勢主要體現在以下幾點:
提高**復用率,相同的測試邏輯只需編寫一條測試用例,就可以被多條測試資料復用,提高了測試**的復用率,同時提高了測試**的編寫效率。
異常排查效率高,測試框架依據測試資料,每條資料生成一條測試用例,用例執行過程相互隔離。如果其中一條失敗,不會影響其他的測試用例。
**可維護性高,清晰的測試框架利於其他測試工程師閱讀,提高**的可維護性。
資料量小的測試用例可以使用**的引數化來實現資料驅動,資料量大的情況下建議大家使用一種結構化的檔案(例如 yaml,json 等)來對資料進行儲存,然後在測試用例中讀取這些資料。
引數化實現資料驅動
pytest 提供了 @pytest.mark.parametrize 裝飾器來進行引數化,可以使用引數化來實現資料驅動。**如下:
import pytest
@pytest.mark.parametrize("key, stock_type, price", [
("alibaba", "baba", 200),
("jd", "jd", 20)
])def test_search_data(self, key, stock_type, price):
assert self.main.goto_search_page().\
search(key).get_price(stock_type) > price
上面的**首先使用 @pytest.mark.parametrize 裝飾器,傳遞了兩組資料,測試結果顯示有兩條測試用例被執行,而不是一條測試用例。也就是 pytest 會將兩組測試資料自動生成兩個對應的測試用例並執行,生成兩條測試結果。
使用 yaml 檔案實現資料驅動
當測試資料量大的情況下,可以考慮把資料儲存在結構化的檔案中。從檔案中讀取出**中所需要格式的資料,傳遞到測試方法中執行。這裡推薦大家使用 yaml 型別的檔案來儲存測試資料。yaml 使用動態字段進行結構化,它以資料為中心,比 excel、csv、json、xml 等更適合做資料驅動。
下面,我們將上面引數化的兩組資料儲存到 yaml 檔案中,建立乙個 data/searchdata.yml 檔案,**如下:
-
- 'alibaba'
- 'baba'
- 200
-- 'jd'
- 'jd'
- 20
上面的**定義了乙個 yaml 格式的資料檔案 searchdata.yml ,檔案中定義了乙個列表,列表中有兩組資料,最後生成的是這樣的資料格式:[["alibaba", "baba", 200],["jd", "jd", 20]] 。
import pytest
import yaml
@pytest.mark.parametrize("search_key, type, price",\
yaml.safe_load(open("../data/searchdata.yml")))
def test_search(self, search_key, type, price):
assert self.main.goto_search_page().\
search(search_key).get_price(type)>price
上面的**,只需要使用 yaml.safe_load() 方法,就來讀取 searchdata.yml 檔案中的資料,分別傳入到用例 test_search() 方法中完成資料的輸入與結果的驗證。而如果使用 excel、csv 檔案格式進行資料的儲存,需要先從 excel 檔案中讀取資料,再解析成需要的格式。而使用 yaml 則完全省去了這個過程。
以上,關於其他環節的資料驅動,在後續章節分享。
介面測試實戰 GET POST 請求區別詳解
這兩種請求方式。深度掌握這兩種請求方式的原理以及異同之處,也是之後做介面測試乙個重要基礎。請求行的 method 不同 post 可以附加 body,可以支援 form json xml binary等各種資料格式 從行業通用規範的角度來說,無狀態變化的建議使用 get 請求,資料的寫入與狀態建議用...
介面測試框架實戰 二 搞定多環境下的介面測試
本文節選自霍格沃玆測試學院內部教材,高階學習,文末 在實際的工作中,絕大部分公司都有至少 3 個以上的環境,供測試與研發人員使用。測試人員不可能為每個環境都準備乙個自動化測試腳步,因為這樣的維護成本太過龐大。所以,要解決這個問題,就需要做到設計一套指令碼,可以在各個環境上面執行。在之前的文章 基於加...
介面測試框架實戰 六 配置的資料驅動
在實際工作中,為了便於維護,對於環境的切換和配置,通常不會使用硬編碼的形式完成。在之前文章 多環境下的介面測試 中,已經介紹了如何將環境的切換作為乙個可配置的選項。本文會把這部分內容進行重構,使用資料驅動的方式完成多環境的配置。參考 多環境下的介面測試 將環境配置部分改為資料驅動的模式 如下 把ho...