Pytest學(xué)習(xí)2 -斷言

一纱皆、前言

學(xué)習(xí)pytest總會習(xí)慣性的和unittest對比使用砌滞,自然就斷言pytest和unittest也是有些區(qū)別的镰踏。

二歇父、斷言對比

unittest 斷言

assertEqual(a, b)        # 判斷a和b是否相等
assertNotEqual(a, b)     # 判斷a不等于b
assertTrue(a)            # 判斷a是否為Ture
assertFalse(a)           # 判斷a是否為False  
assertIn(a, b)           # a 包含在b里面 
asserNotIn(a, b)         # a 不包含在b里面

pytest 斷言
pytest只需要用assert來斷言就行鸥鹉,相對更簡單而便捷

assert xx :    判斷 xx 為真
assert not xx :判斷 xx 不為真
assert a in b :判斷 b 包含 a
assert a == b :判斷 a 等于 b
assert a != b :判斷 a 不等于 b
三、pytest示例代碼
# -*- coding: utf-8 -*-
# @Time    : xxx
# @Author  : cr
# @FileName: test_assert.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def f():
    return 5;


def test_f():
    n = f()
    assert n % 3 == 0, "判斷n 是否能被3整除庶骄,當(dāng)前 n 的值為:%s" % n
    

四毁渗、執(zhí)行結(jié)果
pytest -v test_assert.py


圖片.png

五、異常斷言
結(jié)合pytest 斷言特點和《Pytest之使用斷言指定異车サ螅》灸异,再來一個異常的案例,比如除數(shù)不能為零羔飞,示例代碼如下:

# 異常斷言
# 異常斷言
def test_zero_division():
    with pytest.raises(ZeroDivisionError) as exceptionInfo:
        100 / 0
    # 斷言異常類型
    assert exceptionInfo.type == ZeroDivisionError
    # 斷言異常的值
    assert "division by zero" in str(exceptionInfo.value)

知識點:
使用pytest.raises肺樟,來捕獲對應(yīng)的異常示例,exceptionInfo為一個對象示例來接收屬性信息逻淌,通常是斷言異常的 type 和 value 值

1么伯、使用match斷言
match 關(guān)鍵字是測試正則表達式與異常的字符串表示形式是否匹配
這種方法只能斷言value,不能斷言類型
示例代碼如下:

# match的使用
def test_zero_division_match():
    with pytest.raises(ZeroDivisionError, match=".*zero.*") as exceptionInfo:
        100 / 0
    # 也可以這樣
    with pytest.raises(ZeroDivisionError, match="zero") as exceptionInfo:
        100 / 0
        

match 方法的regexp參數(shù)與 re.search 函數(shù)匹配卡儒,因此在上面的示例中 match='zero' 也可以使用

2田柔、檢查斷言裝飾器使用
示例代碼如下:

# 斷言裝飾器
@pytest.mark.xfail(raises=ZeroDivisionError)
def test_f():
    1 / 0
    

個人覺得這個斷言裝飾器,和java的注解類似骨望,相對更輕量快捷

3硬爆、執(zhí)行結(jié)果

知識點
代碼拋出異常,但是和raises指定的異常類相匹配擎鸠,所以不會斷言失敗
它相當(dāng)于一個檢查異常裝飾器缀磕,功能:檢查是否有異常,不確定是否有異常
with pytest.raise(ZeroDivisionError) 對于故意測試異常代碼的情況劣光,使用可能會更好
而@pytest.mark.xfail(raises=ZeroDivisionError) 對于檢查未修復(fù)的錯誤(即袜蚕,可能會發(fā)生異常),使用檢查斷言可能會更好


參考鏈接
https://www.cnblogs.com/longronglang/p/13848899.html
系列參考文章:
https://www.cnblogs.com/poloyy/category/1690628.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绢涡,一起剝皮案震驚了整個濱河市牲剃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垂寥,老刑警劉巖颠黎,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件另锋,死亡現(xiàn)場離奇詭異,居然都是意外死亡狭归,警方通過查閱死者的電腦和手機夭坪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來过椎,“玉大人室梅,你說我怎么就攤上這事【斡睿” “怎么了亡鼠?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敷待。 經(jīng)常有香客問我间涵,道長,這世上最難降的妖魔是什么榜揖? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任勾哩,我火速辦了婚禮,結(jié)果婚禮上举哟,老公的妹妹穿的比我還像新娘思劳。我一直安慰自己,他們只是感情好妨猩,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布潜叛。 她就那樣靜靜地躺著,像睡著了一般壶硅。 火紅的嫁衣襯著肌膚如雪威兜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天森瘪,我揣著相機與錄音牡属,去河邊找鬼票堵。 笑死扼睬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悴势。 我是一名探鬼主播窗宇,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼特纤!你這毒婦竟也來了军俊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤捧存,失蹤者是張志新(化名)和其女友劉穎粪躬,沒想到半個月后担败,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡镰官,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年提前,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泳唠。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡狈网,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笨腥,到底是詐尸還是另有隱情拓哺,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布脖母,位于F島的核電站士鸥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谆级。R本人自食惡果不足惜础淤,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哨苛。 院中可真熱鬧鸽凶,春花似錦、人聲如沸建峭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亿蒸。三九已至凑兰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間边锁,已是汗流浹背姑食。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茅坛,地道東北人音半。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像贡蓖,于是被迫代替她去往敵國和親曹鸠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350