今天要和大家聊聊參數化的問題,什麼叫做參數化?比如一個登錄系統的操作,我們會設計很多用例來測試這個登錄功能是否OK(用戶名正確,密碼錯誤;用戶名錯誤,密碼錯誤;用戶名正確,密碼正確等)。這時候發現輸入的參數是在不斷變化的,但是都是執行同一個登錄操作。所以參數化其實就是一個方法,在不同輸入參數的情況下進行用例測試。
在unittest中常用的參數化有三類:nose-parameterized、paramunittest、ddt。
一、nose-parameterized
1、環境準備
在安裝了pip的情況下,在cmd下執行pip install nose-parameterized。
2、實踐
使用前先導入模塊:fromnose_parameterizedimportparameterized。
上圖代碼,主要測試一個簡單的加法運算,可以看到@parameterized.expand後加了三個參數進行測試,其中一個參數是用例名字,後邊三個參數分別對應test_add方法中a/b/c三個變量,一一對應的關係。可以關注其寫法,且參數的對應關係,如果少了參數或者沒有對應,會導致用例執行報錯或者失敗。
二、paramunittest
1、環境準備
pip install paramunittest
從安裝的情況來看,提示這個庫已經存在了,說明這個庫應該是python自帶的一個參數化庫,如果大家發現沒有的話可以自行安裝。
2、實踐
從官網上可以看到它給的一個實例
其參數化裡頭可以是元組,也可以是字典,設置元組合字典可以一起使用。
元組('1','2')其值分別對應a,b;
(('4',),{'b':'5'})中a為4,b為5;
((),{'a':5,'b':6})中a為5,b為6;
{'a':5,'b':6}中a,b一一對應。
從中可以看出paramunittest方法和參數化中參數的一個對應關係,值得一提的是,如果參數化中是字典的形式,那麼必須要和方法中參數名要一致,否則會出現失敗。如: