1苦掘、官網(wǎng):https://pypi.org/project/parameterized/
2八拱、parameterized:可以使用任何Python測(cè)試框架進(jìn)行參數(shù)化測(cè)試阵赠。比如nose的參數(shù)化測(cè)試涯塔,py.test的參數(shù)化測(cè)試,unittest的參數(shù)化測(cè)試豌注。
3伤塌、安裝parameterized:pip install parameterized
4、安裝nose:pip install nose
5轧铁、安裝pytest:pip install pytest
6每聪、官網(wǎng)例子:
導(dǎo)入相應(yīng)的包:
from?nose.tools?import?assert_equal
from?parameterized?import?parameterized,?parameterized_class
import?unittest
import?math
6.1、@parameterized 裝飾符接受一個(gè)由tuples或param(...)組成的列表等:
@parameterized([
????(2,?2,?4),
????(2,?3,?8),
????(1,?9,?1),
????(0,?9,?0),
])
#參數(shù)化3個(gè)參數(shù)base,exponent,expected齿风,4組參數(shù)药薯,傳入具體數(shù)值。
def?test_pow(base,?exponent,?expected):#測(cè)試冪函數(shù)救斑,傳入3個(gè)參數(shù)值
???assert_equal(math.pow(base,?exponent),?expected)
6.2童本、@parameterized.expand 裝飾符接受一個(gè)由tuples或param(...)組成的列表等,unittest僅支持這種@parameterized.expand 的用法脸候,@parameterized.expand 可以用來(lái)在無(wú)法使用測(cè)試生成器的情況下生成測(cè)試方法(例如穷娱,當(dāng)測(cè)試類是unittest.TestCase的子類時(shí):
class?TestMathUnitTest(unittest.TestCase):#測(cè)試math的測(cè)試用例
???@parameterized.expand([
???????("negative",?-1.5,?-2.0),
???????("integer",?1,?1.0),
???????("large?fraction",?1.6,?1),
???])#參數(shù)化3個(gè)參數(shù),name,?input,?expected,3組參數(shù)运沦。傳入測(cè)試方法名字和具體數(shù)值
???def?test_floor(self,?name,?input,?expected):##測(cè)試floor函數(shù)泵额,傳入3個(gè)參數(shù)值
???????assert_equal(math.floor(input),?expected)
???'''
?? floor函數(shù):Return?the?floor?of?x?as?an?Integral.This?is?the?largest?integer?<=?x.
???'''
6.3、加法和乘法測(cè)試:
@parameterized_class(('a',?'b',?'expected_sum',?'expected_product'),?[
???(1,?2,?3,?2),
???(5,?5,?10,?25),
])#參數(shù)化4個(gè)參數(shù)携添,'a',?'b',?'expected_sum',?'expected_product',2組參數(shù)嫁盲。傳入變量和具體數(shù)值
class?TestMathClass(unittest.TestCase):
???def?test_add(self):#加法測(cè)試
??????assert_equal(self.a?+?self.b,?self.expected_sum)
???def?test_multiply(self):#乘法測(cè)試
??????assert_equal(self.a?*?self.b,?self.expected_product)
6.4、減法測(cè)試:
@parameterized_class([
???{?"a":?3,?"expected":?2?},#3-1=2
???{?"b":?5,?"expected":?-4?},#1-5=-4
])#參數(shù)化2個(gè)參數(shù)烈掠,2組參數(shù)羞秤。傳入變量和具體數(shù)值
class?TestMathClassDict(unittest.TestCase):
???a?=?1
???b?=?1
???def?test_subtract(self):#減法測(cè)試
??????assert_equal(self.a?-?self.b,?self.expected)
7、參數(shù)化參數(shù)
7.1左敌、nose的參數(shù)化測(cè)試:nosetests -v test_math.py
7.2瘾蛋、py.test的參數(shù)化測(cè)試:py.test -v test_math.py()
7.3、unittest的參數(shù)化測(cè)試:python -m unittest -v test_math.py
備注: 因?yàn)閡nittest不支持測(cè)試裝飾符母谎,所以只有用@parameterized.expand創(chuàng)建的測(cè)試才會(huì)執(zhí)行瘦黑。
8、兼容性: