pytest-mark 引數化
阿新 • • 發佈:2022-04-03
在類前或用例前用pytest.mark.parametrize ,可進行引數化
傳參方式比較靈活,有很多種,下面是列出的幾種方式,其他的可自行研究
@pytest.mark.parametrize("引數名",列表)
原始碼:
:param argnames: A comma-separated string denoting one or more argument names, or a list/tuple of argument strings. :param argvalues: The list of argvalues determines how often a testis invoked with different argument values. If only one argname was specified argvalues is a list of values. If N argnames were specified, argvalues must be a list of N-tuples, where each tuple-element specifies a value for its respective argname.
翻譯:
引數名:字串的形式存在一個或多個引數,用逗號分隔 , 或者用引數字串的列表或元組
引數:如果是一個,則用list;
如果多個,引數必須以列表中元組的形式,每一個元組對應一組引數值
- 單個引數:
只傳單個引數的值即可
@pytest.mark.parametrize("a",["test123456","test2222"]) def test_a(self,a): print(a)
執行結果:
- 多個引數
以元組的形式傳入多個引數的值,一個元組代表一組引數的值
例如:第一組a=1,b=2
第二組a=3,b=4
@pytest.mark.parametrize("a,b",[(1,2),(3,4)]) def test_two_param(self,a,b): print(a+b)
執行結果:
引數名以列表的傳入
@pytest.mark.parametrize(["a","b","c"],[(1,2,3),(3,4,7)]) def test_list(self,a,b,c): assert a+b == c print(a+b)
執行結果:
單個多次傳入多個引數,排列組合傳入
a = (1,2,3) b = (4,5) @pytest.mark.parametrize("test_a",a) @pytest.mark.parametrize("test_b",b) def test_2_param(self,test_a,test_b): print(test_a*test_b)
執行結果
- json格式傳入引數
呼叫時,在名稱後面加.items()讀取內容
data1 = { "test1":"test1", "test2":"test2" } @pytest.mark.parametrize("test",data1.items()) def test_json(self,test): print(test)
執行結果