當待測試的輸入輸出是一組資料時,可以將測試資料組織起來呼叫相同的測試方法。
即:將不同的引數,寫入集合中,程式自動呼叫集合中的資料,直到集合為空。
parametrize()使用方法
單次使用
同乙個測試用例只新增乙個@pytest.mark.parametrize()。
@pytest.mark.parametrize(
"test_input,expected",[
("3+5",8
),("2+5",7
)])def
test_eval
(self,test_input,expected)
:# eval 將字串當成表示式執行
assert
eval
(test_input)
== expected
使用@pytest.mark.parametrize裝飾器實現引數化。
parametrize(『data』, param):"test_input,expected"是自定義的引數名,多個引數名之前以逗號隔開;
[(「3+5」,8),(「2+5」,7)]是傳入的引數列表。
將自定義的引數名傳入測試用例,即可呼叫引數。
執行結果:
多次使用
同乙個測試用例只新增多個@pytest.mark.parametrize(),多個parametrize之間的元素互相組合(類似笛卡爾乘積),生成大量的測試用例。
@pytest.mark.parametrize(
"x",[1
,3])
@pytest.mark.parametrize(
"y",[2
,4,6
])deftest_eval
(self, x, y)
:print
(f"測試資料組合x:,y:"
)
執行結果:
@pytest.fixture與@pytest.mark.parametrize結合
使用場景
測試資料需要在fixture方法中使用,同時也需要在測試用例中使用
使用方法
新增引數indirect=true
@pytest.mark.parametrize(『login_r』,test_user_data,indirect=true)
test_user_data =
['xiaoming'
,'wangmeimei'
] @pytest.fixture(scope=
'module'
)def
login_r
(request)
:# 使用request.par接收引數
user = request.test_user_data
print
(f"\n使用者為:"
)return user
# 當indirect=true時,將test_user_data作為引數傳入函式login_r中
@pytest.mark.parametrize(
'login_r'
,test_user_data,indirect=
true
)def
test_login
(self,login_r)
: a = login_r
print
(f"login返回值是:"
)
執行結果:
Pytest 引數化用例
使用裝飾器 pytest.mark.parametrize 引數,值 只傳乙個引數 pytest.mark.parametrize name search list def test demo name print name assert name in search list 傳多個引數 pyte...
Pytest學習7 引數化
在測試過程中,引數化是必不可少的功能,本文就討論下pytest的幾種引數化方法 1.內建的pytest.mark.parametrize裝飾器支援測試函式的引數化基本用法 例如 pytest.mark.parametrize input,expect 3 5 8 5 5 9 4 9 12 10 21...
pytest實現測試用例引數化
本文總www.cppcns.com結pytest的測試用例引數化。軟體測試中,輸入相應值,檢查期望值,是常見測試方法。在自動化測試中,乙個測試用例對應乙個測試點,通常一組測試資料無法完全覆蓋測試範圍,所以,需要引數化來傳遞多組資料。pytest的測試用例引數化使用如下裝飾器即可完成。pytest.m...