fixtrue基礎之params引數實現簡單引數化

新夢想IT發表於2022-08-12


 

 

前言

我的努力求學沒有得到別的好處,只不過是愈來愈發覺自己的無知。 ——笛卡兒 

如果大家越來越在一個領域思考的話,應該會有如上的認知。

 

一、 params引數是什麼?

 

 

·  params引數是fixture方法中的其中一個引數;(ps:為了防止有些朋友單獨看這篇博文才寫了這句)

·  params引數接受列表型別的資料 實現引數化功能。

 

二、關於引數化的理解

 

 

 

·  相同的 測試指令碼 使用不同的測試資料來執行,測試資料和測試行為進行了完全的分離,這樣的測試指令碼設計模式叫做資料驅動;

·  引數化就是資料驅動實現的一種表現;

·  比如登入功能模組,使用 3組不同的使用者名稱和密碼進行登入來驗證登入功能模組的正確性,可以把這組不同的使用者名稱和密碼理解為引數化的資料;

·  為什麼要使用不同的資料來對相同模組功能進行驗證,因為這樣測試會更充分一些,也可以檢查程式是否處理了各種異常情況(如錯誤的使用者名稱、錯誤的密碼等)。

 

 

 

三、 params引數應用

 

 

·  3.1 簡單應用params引數

import pytest

 

user_list = ['xiaoming','xiaohong','xiaoli']

@pytest.fixture(params=user_list)    #params引數接收列表型別資料

def setUp(request):                        #傳參預設request引數

    return request.param

 

def testadd(setUp):

    print('\n使用者名稱:'+ str(setUp))

    assert1

 

if__name__=='__main__':

    pytest.main(["-s"])

 

 

 

 

·  3.2 思維發散一點,一組引數包含多個值

 

import pytest

 

#使用包含字典的列表傳值,解決一組引數只有一個的問題

user_list = [{'username':'xiaoming','password':'666666'}, 

                 {'username':'xiaohong','password':'888888'}, 

                 {'username':'xiaoli','password':'123456'}

                ]

@pytest.fixture(params=user_list)

def setUp(request):

    returnrequest.param

 

def testadd(setUp):

    print('\n使用者名稱:'+ str(setUp['username']),end=' ')    #setUp['username']取使用者名稱

    print('密碼:'+ str(setUp['password']))                     #setUp['password']取密碼

    assert 1

 

if__name__=='__main__': 

     pytest.main(["-s"])

 

 

上述兩個例項小結:

 

 

·  params引數只要求是列表型別的資料;

·  傳參預設 request引數不能更改其它名字;

·  有了示例 2,大家其實可以想到把 測試 的期望結果也做成引數化的形式

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2910227/,如需轉載,請註明出處,否則將追究法律責任。

相關文章