一、unittest參數化介紹
- 參數化測試用於當需要使用多組不同的測試數據測試同一個方法的時候
- paramunittest是unittest實現參數化的一個專門的模塊,可以傳入多組參數,自動生成多個用例
- 實現unittest參數化的方式有多種,如ddt、paramunittest等
二、paramunittest模塊安裝
pip install paramunittest
三、基礎示例
3.1 示例1--元祖數據實現參數化
import unittest import paramunittest # 參數化兩組元祖類型數據
@paramunittest.parametrized( (8,5), (34,20) ) class UTestDemo(paramunittest.ParametrizedTestCase): def setParameters(self, numa,numb): # 把參數化數據傳遞到測試類中
self.numa=numa self.numb=numb def test_num(self): print('numa=%d,numb=%d'%(self.numa,self.numb)) self.assertGreater(self.numa, self.numb) if __name__ == '__main__': unittest.main()
執行以上代碼,測試結果如下
3.2 示例2-- 列表數據實現參數化
import unittest import paramunittest # 參數化兩組列表類型數據
@paramunittest.parametrized( [8,5], [34,20] ) class UTestDemo(paramunittest.ParametrizedTestCase): def setParameters(self, numa,numb): # 把參數化數據傳遞到測試類中
self.numa=numa self.numb=numb def test_num(self): print('numa=%d,numb=%d'%(self.numa,self.numb)) self.assertGreater(self.numa, self.numb) if __name__ == '__main__': unittest.main()
測試結果如下
3.3 示例3-- 字典數據實現參數化
import unittest import paramunittest # 參數化兩組字典類型數據
@paramunittest.parametrized( {'numa':8,'numb':5}, {'numa':34,'numb':20} ) class UTestDemo(paramunittest.ParametrizedTestCase): def setParameters(self, numa,numb): # 把參數化數據傳遞到測試類中
self.numa=numa self.numb=numb def test_num(self): print('numa=%d,numb=%d'%(self.numa,self.numb)) self.assertGreater(self.numa, self.numb) if __name__ == '__main__': unittest.main()
執行結果
通過以上示例可以看出,元祖、字典、列表等都可以實現參數化,參數還可通過函數或者數據對象傳入
***3.4 示例4-- 參數通過函數或者數據對象傳入
#參數通過數據對象傳入進去
testdata=[{'numa':8,'numb':5},{'numa':34,'numb':20}] @paramunittest.parametrized( *testdata )
# 參數通過函數傳入進去
def get_data(): return [{'numa':8,'numb':5},{'numa':34,'numb':20}] @paramunittest.parametrized( *get_data() )