在測試工作中,我們經常會針對某一API接口,或者某一個使用者界面的輸入框設計大量的用例,每個用例包含實際輸入的各種可能的資料,這樣我們可以通過使用unittest和ddt結合的方式,實作資料驅動測試。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQDOxEzX3xCZlhXam9VbsUmepNXZy9CXwJWZ3xCdh1mcvZ2Lc1zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwIzX39GZhh2csATMflHLwEzX4xSZz91ZsAzMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0cTM5MzMmZzM2UmYjFGZyYzX0EDMxADMzIzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
1
Unittest測試架構介紹:
Unittest 架構包含一個test Fixture,test Fixture由三部分組成,setup,testCase和teardown。Setup過程是測試用例執行前的初始化過程,teardown過程,是在測試用例執行後,對資源進行釋放和回收的過程;而testCase是具體的測試用例。
2
ddt介紹:
ddt是第三方子產品,需安裝,pip install ddt
ddt包含類的裝飾器ddt和兩個方法裝飾器data
通常情況下,data中的資料按照一個參數傳遞給測試用例,如果data中含有多個資料,以元組,清單,字典等資料,需要自行在腳本中對資料進行分解或者使用unpack分解資料。
@data(a,b) a和b各運作一次用例
@data([a,b],[c,d]) 如果沒有@unpack 那麼[a,b]當成一個參數傳入用例運作,如果有@unpack,那麼[a,b]被分解開,按照用例中的兩個參數傳遞.
輸出結果如下:
ddt也可以通過file_data 裝飾方法,加載json檔案,yaml檔案,實作資料驅動,具體代碼如下:
可以将用例寫在檔案中,通過ddt加載檔案,實作資料驅動。當然ddt也可和excel、csv檔案結合實作資料驅動測試。
ddt+csv檔案實作資料驅動:
在測試中我們可以根據具體測試情況在data中添加測試資料,通過資料驅動執行測試用例。進而避免代碼重複。
THE
END