最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

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

2022-11-01 14:28 作者:愛測軟件測試  | 我要投稿


在之前的文章中主要分享了 pytest 的實(shí)用特性,接下來講 Pytest 參數(shù)化用例的構(gòu)建。

如果待測試的輸入與輸出是一組數(shù)據(jù),可以把測試數(shù)據(jù)組織起來用不同的測試數(shù)據(jù)調(diào)用相同的測試方法。參數(shù)化顧名思義就是把不同的參數(shù),寫到一個集合里,然后程序會自動取值運(yùn)行用例,直到集合為空便結(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ù)里面表達(dá)式和值是否相等,代碼如下:
    運(yùn)行結(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 種,希望驗(yàn)證用戶名和密碼,就會涉及到 nm 種組合的測試用例,如果把這些數(shù)據(jù)一一的列出來,工作量也是非常大的。pytest 提供了一種參數(shù)化的方式,將多組測試數(shù)據(jù)自動組合,生成大量的測試用例。示例代碼如下:
    運(yùn)行結(jié)果:
    分析如上運(yùn)行結(jié)果,測試方法 test_foo( ) 添加了兩個?@pytest.mark.parametrize() 裝飾器,兩個裝飾器分別提供兩個參數(shù)值的列表,2 * 3 = 6 種結(jié)合,pytest 便會生成 6 條測試用例。在測試中通常使用這種方法是所有變量、所有取值的完全組合,可以實(shí)現(xiàn)全面的測試。
    下面講結(jié)合?@pytest.fixture?與?@pytest.mark.parametrize?實(shí)現(xiàn)參數(shù)化。
    如果測試數(shù)據(jù)需要在 fixture 方法中使用,同時也需要在測試用例中使用,可以在使用 parametrize 的時候添加一個參數(shù) indirect=True,pytest 可以實(shí)現(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”文件,代碼如下:
    運(yùn)行結(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ù)。


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

分享到微博請遵守國家法律
宜川县| 福清市| 宜昌市| 巴彦县| 墨玉县| 巫溪县| 奉节县| 墨竹工卡县| 屏边| 惠州市| 高雄县| 建水县| 黄浦区| 屯昌县| 云南省| 千阳县| 仁寿县| 津南区| 沅江市| 景德镇市| 台江县| 巫溪县| 家居| 聂拉木县| 卓资县| 平利县| 东丰县| 观塘区| 荔浦县| 余干县| 岳阳县| 梅河口市| 岳西县| 乐安县| 淮北市| 平罗县| 永修县| 辉南县| 林周县| 灌云县| 德州市|