1. 程式人生 > >pytest引數化

pytest引數化

pytest有三種傳參方式,我主要用到前兩種

pytest的引數化方式

  • pytest.fixture()方式進行引數化,fixture裝飾的函式可以作為引數傳入其他函式

  • pytest.mark.parametrize()方式進行引數化

  • conftest.py 檔案中存放參數化函式,可作用於模組內的所有測試用例

本章主要講第二種方式:@pytest.mark.parametrize('引數名',list) 進行引數化

1. 傳一個引數 @pytest.mark.parametrize('引數名',list) 進行引數化

2. 傳兩個引數@pytest.mark.parametrize('引數名1,引數名2',[(引數1_data[0], 引數2_data[0]),(引數1_data[1], 引數2_data[1])]) 進行引數化, 傳三個或更多引數也是這樣傳。list的每個元素都是一個元組,元組裡的每個元素和按引數順序一一對應

從網上找了個例子,講的很清楚,在這裡借用下:

pytest.mark.parametrize()方式進行引數化

  • 採用標記函式引數化,傳入單個引數,pytest.mark.parametrize("引數名",lists)

    mark.png

  • 採用標記函式傳入多個引數,如pytest.mark.parametrize("para1, para2", [(p1_data_0, p2_data_0), (p1_data_1, p2_data_1),...]

  • 測試用例中傳入2個引數,year和期望結果,使輸入資料與預期結果對應,構造了2組會失敗的資料,在執行結果中,可以看到失敗原因:

image.png