Pytest(7) 引數化用例

2021-10-11 01:12:17 字數 1996 閱讀 3234

當待測試的輸入輸出是一組資料時,可以將測試資料組織起來呼叫相同的測試方法。

即:將不同的引數,寫入集合中,程式自動呼叫集合中的資料,直到集合為空。

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...