Python 自動化測試(三): pytest 參數(shù)化測試用例構(gòu)建

[圖片上傳失敗...(image-30ab0d-1652667728633)]
在之前的文章中主要分享了 pytest 的實用特性栓始,接下來講 Pytest 參數(shù)化用例的構(gòu)建救欧。
如果待測試的輸入與輸出是一組數(shù)據(jù),可以把測試數(shù)據(jù)組織起來用不同的測試數(shù)據(jù)調(diào)用相同的測試方法歇攻。參數(shù)化顧名思義就是把不同的參數(shù)牌捷,寫到一個集合里洲守,然后程序會自動取值運行用例,直到集合為空便結(jié)束儿奶。pytest 中可以使用 @pytest.mark.parametrize 來參數(shù)化框往。
parametrize( ) 方法源碼:

  • 主要參數(shù)說明
  • argsnames :參數(shù)名,是個字符串廓握,如中間用逗號分隔則表示為多個參數(shù)名
  • argsvalues :參數(shù)值搅窿,參數(shù)組成的列表,列表中有幾個元素隙券,就會生成幾條用例
  • 使用方法
  • 使用 @pytest.mark.paramtrize() 裝飾測試方法
  • parametrize('data', param) 中的 “data” 是自定義的參數(shù)名男应,param 是引入的參數(shù)列表
  • 將自定義的參數(shù)名 data 作為參數(shù)傳給測試用例 test_func
  • 然后就可以在測試用例內(nèi)部使用 data 的參數(shù)了
    創(chuàng)建測試用例,傳入三組參數(shù)娱仔,每組兩個元素沐飘,判斷每組參數(shù)里面表達式和值是否相等,代碼如下:
    運行結(jié)果:
    整個執(zhí)行過程中牲迫,pytest 將參數(shù)列表 [("3+5",8),("2+5",7),("75",30)] 中的三組數(shù)據(jù)取出來耐朴,每組數(shù)據(jù)生成一條測試用例,并且將每組數(shù)據(jù)中的兩個元素分別賦值到方法中盹憎,作為測試方法的參數(shù)由測試用例使用泽示。
    同一個測試用例還可以同時添加多個 @pytest.mark.parametrize 裝飾器, 多個 parametrize 的所有元素互相組合(類似笛卡兒乘積),生成大量測試用例夜只。
    場景:比如登錄場景迷守,用戶名輸入情況有 n 種,密碼的輸入情況有 m 種檩禾,希望驗證用戶名和密碼挂签,就會涉及到 n
    m 種組合的測試用例,如果把這些數(shù)據(jù)一一的列出來盼产,工作量也是非常大的饵婆。pytest 提供了一種參數(shù)化的方式,將多組測試數(shù)據(jù)自動組合戏售,生成大量的測試用例侨核。示例代碼如下:
    運行結(jié)果:
    分析如上運行結(jié)果草穆,測試方法 test_foo( ) 添加了兩個 @pytest.mark.parametrize() 裝飾器,兩個裝飾器分別提供兩個參數(shù)值的列表芹关,2 * 3 = 6 種結(jié)合续挟,pytest 便會生成 6 條測試用例。在測試中通常使用這種方法是所有變量侥衬、所有取值的完全組合诗祸,可以實現(xiàn)全面的測試。
    下面講結(jié)合 @pytest.fixture 與 @pytest.mark.parametrize 實現(xiàn)參數(shù)化轴总。
    如果測試數(shù)據(jù)需要在 fixture 方法中使用直颅,同時也需要在測試用例中使用,可以在使用 parametrize 的時候添加一個參數(shù) indirect=True怀樟,pytest 可以實現(xiàn)將參數(shù)傳入到 fixture 方法中功偿,也可以在當(dāng)前的測試用例中使用。
    parametrize 源碼:
    indirect 參數(shù)設(shè)置為 True往堡,pytest 會把 argnames 當(dāng)作函數(shù)去執(zhí)行械荷,將 argvalues 作為參數(shù)傳入到 argnames 這個函數(shù)里。創(chuàng)建“test_param.py”文件虑灰,代碼如下:
    運行結(jié)果:
    上面的結(jié)果可以看出吨瞎,當(dāng) indirect=True 時,會將 login_r 作為參數(shù)穆咐,test_user_data 被當(dāng)作參數(shù)傳入到 login_r 方法中颤诀,生成多條測試用例。通過 return 將結(jié)果返回对湃,當(dāng)調(diào)用 login_r 可以獲取到 login_r 這個方法的返回數(shù)據(jù)崖叫。
    【相關(guān)閱讀】
  • Python 測試開發(fā)實戰(zhàn)進階,挑戰(zhàn)阿里P6+拍柒,年薪50W+心傀!
  • 干貨 | 一文搞定 pytest 自動化測試框架(一)
  • 干貨 | 一文搞定 pytest 自動化測試框架(二)
  • 干貨 | 一文搞定 Linux 常用高頻命令

原文鏈接

獲取更多資料 vx:ceshiren001

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拆讯,隨后出現(xiàn)的幾起案子剧包,更是在濱河造成了極大的恐慌,老刑警劉巖往果,帶你破解...
    沈念sama閱讀 212,657評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異一铅,居然都是意外死亡陕贮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,662評論 3 385
  • 文/潘曉璐 我一進店門潘飘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肮之,“玉大人掉缺,你說我怎么就攤上這事「昵埽” “怎么了眶明?”我有些...
    開封第一講書人閱讀 158,143評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長筐高。 經(jīng)常有香客問我搜囱,道長,這世上最難降的妖魔是什么柑土? 我笑而不...
    開封第一講書人閱讀 56,732評論 1 284
  • 正文 為了忘掉前任蜀肘,我火速辦了婚禮,結(jié)果婚禮上稽屏,老公的妹妹穿的比我還像新娘扮宠。我一直安慰自己,他們只是感情好狐榔,可當(dāng)我...
    茶點故事閱讀 65,837評論 6 386
  • 文/花漫 我一把揭開白布坛增。 她就那樣靜靜地躺著,像睡著了一般薄腻。 火紅的嫁衣襯著肌膚如雪收捣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,036評論 1 291
  • 那天被廓,我揣著相機與錄音坏晦,去河邊找鬼。 笑死嫁乘,一個胖子當(dāng)著我的面吹牛昆婿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜓斧,決...
    沈念sama閱讀 39,126評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼仓蛆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挎春?” 一聲冷哼從身側(cè)響起看疙,我...
    開封第一講書人閱讀 37,868評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎直奋,沒想到半個月后能庆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,315評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡脚线,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,641評論 2 327
  • 正文 我和宋清朗相戀三年搁胆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,773評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡渠旁,死狀恐怖攀例,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顾腊,我是刑警寧澤粤铭,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站杂靶,受9級特大地震影響梆惯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伪煤,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一加袋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抱既,春花似錦职烧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,859評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捷泞,卻和暖如春足删,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锁右。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工失受, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咏瑟。 一個月前我還...
    沈念sama閱讀 46,584評論 2 362
  • 正文 我出身青樓拂到,卻偏偏與公主長得像,于是被迫代替她去往敵國和親码泞。 傳聞我的和親對象是個殘疾皇子兄旬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,676評論 2 351

推薦閱讀更多精彩內(nèi)容