python+appium+pytest自動化測試-跳過測試與預(yù)期失敗的測試

來自APP Android端自動化測試初學(xué)者的筆記,寫的不對的地方大家多多指教哦殉挽。

在我們自動化測試過程中植影,經(jīng)常會遇到功能阻塞裳擎、功能未實現(xiàn)、環(huán)境等一系列外部因素問題導(dǎo)致的一些用例執(zhí)行不了思币,這時我們就可以用到跳過skip用例鹿响,如果我們注釋掉或刪除掉,后面還要進行恢復(fù)操作谷饿。

一惶我、跳過測試類

該方法用于需要跳過的測試類,在測試類前面添加裝飾器:@pytest.mark.skip()各墨。

1.skip():被標記的類中所有方法測試用例都會被跳過

import pytest

@pytest.mark.skip()
class TestPhoneLogin:
    def test_error_phone_format(self):
        assert 1 == 1

    def test_error_phone_longer(self):
        assert 1 == 1

    def test_error_phone_shorter(self):
        assert 1 == 1

    def test_error_write_verification_code(self):
        assert 1 == 1

執(zhí)行結(jié)果如下圖所示:

image.png

2.skip(reason=''):被標記的測試類在執(zhí)行過程中會直接跳過,結(jié)果會顯示reason启涯。

import pytest

@pytest.mark.skip(reason='該類不需要執(zhí)行測試')
class TestPhoneLogin:
    def test_error_phone_format(self):
        assert 1 == 1

    def test_error_phone_longer(self):
        assert 1 == 1

    def test_error_phone_shorter(self):
        assert 1 == 1

    def test_error_write_verification_code(self):
        assert 1 == 1

在執(zhí)行時使用”pytest -v -rs“贬堵,結(jié)果才會顯示reason。若不添加“-rs“结洼,則只顯示跳過的數(shù)量(同1)黎做,不顯示reason。

image.png

3.skipif(條件, reason=''):被標記的測試類在滿足條件的情況下會跳過松忍,不滿足條件的情況下會執(zhí)行測試類中的測試函數(shù)蒸殿。

a.滿足條件:跳過測試類中的所有測試用例。

import pytest

@pytest.mark.skipif(1 == 1, reason='該類不需要執(zhí)行測試')
class TestPhoneLogin:
    def test_error_phone_format(self):
        assert 1 == 1
......

b.不滿足條件:執(zhí)行測試類中的所有測試用例鸣峭。測試結(jié)果同2

import pytest

@pytest.mark.skipif(1 == 2, reason='該類不需要執(zhí)行測試')
class TestPhoneLogin:
    def test_error_phone_format(self):
        assert 1 == 1
......

二宏所、跳過測試函數(shù)

該方法用于需要跳過的測試用例,在測試用例前面添加裝飾器:@pytest.mark.skip()摊溶。

1.skip():被標記的測試用例函數(shù)在執(zhí)行過程中會直接跳過爬骤。

import pytest

class TestPhoneLogin:
    @pytest.mark.skip()
    def test_error_phone_format(self):
        assert 1 == 1
......

結(jié)果顯示:

image.png

2.skip(reason=''):被標記的測試用例函數(shù)在執(zhí)行過程中會直接跳過,結(jié)果會顯示reason莫换,

在執(zhí)行時使用”pytest -v -rs“霞玄,結(jié)果才會顯示reason。若不添加“-rs“拉岁,則只顯示跳過的數(shù)量(同1)坷剧,不顯示reason。

import pytest

class TestPhoneLogin:
    @pytest.mark.skip(reason='該類不需要執(zhí)行測試')
    def test_error_phone_format(self):
        assert 1 == 1
......

image.png

3.skipif():被標記的測試函數(shù)在滿足條件的情況下會跳過喊暖,不滿足條件的情況下會測試函數(shù)惫企。有條件地跳過。

a.滿足條件:跳過測試類中的所有測試用例陵叽。

import pytest

class TestPhoneLogin:
    @pytest.mark.skipif(1 == 1, reason='該類不需要執(zhí)行測試')
    def test_error_phone_format(self):
        assert 1 == 1
......

b.不滿足條件:執(zhí)行測試類中的所有測試用例雅任。測試結(jié)果同2

import pytest

class TestPhoneLogin:
    @pytest.mark.skipif(1 == 2, reason='該類不需要執(zhí)行測試')
    def test_error_phone_format(self):
        assert 1 == 1
......

三风范、skip賦值給變量,可多處

無論是@pytest.mark.skip()標簽還是@pytest.mark.skipif()標簽沪么,如果你想在多個測試方法上裝飾硼婿,依次寫起來很麻煩的話,你可以選擇定義個變量讓它等于標簽禽车,然后在裝飾的時候用該變量代替標簽寇漫。這種方法,你還可以通過在其他模塊中導(dǎo)入的變量的方式殉摔,在其他模塊中共享標簽州胳。

賦值:myskip=pytest.mark.skipif(1==1,reason='skip賦值給變量,可多處調(diào)用')

調(diào)用:@myskip

import pytest

my_skip = pytest.mark.skipif(1 == 1, reason=**reason='**skip賦值給變量逸月,可多處調(diào)用**'**)
class TestPhoneLogin:
    @my_skip 
    def test_error_phone_format(self):
        assert 1 == 1
......

四栓撞、Xfail-期望測試失敗

1.xfail

您可以使用xfail標記來指示您期望測試失敗。一個常見的用例是當你發(fā)現(xiàn)在你的軟件中的錯誤碗硬,你編寫一個測試文檔軟件如何應(yīng)該的行為瓤湘。在修復(fù)該錯誤之前,該測試當然會失敗恩尾。為避免測試失敗弛说,請將測試標記為xfail。修復(fù)錯誤后翰意,請刪除xfail標記并進行回歸測試木人,以確保該錯誤不會再次發(fā)生。

import pytest

class TestPhoneLogin:
    @pytest.mark.xfail()
    def test_error_phone_format(self):
        assert 1 == 2
......

image.png

擁有xfail標記仍然可以運行測試冀偶,但是一旦失敗就不會報告回溯醒第。相反,終端報告將在“預(yù)期失敗”(XFAIL)部分列出該報告进鸠。如果測試沒有失敗淘讥,它將報告為“意外通過”(XPASS)。

import pytest

class TestPhoneLogin:
    @pytest.mark.xfail()
    def test_error_phone_format(self):
        assert 1 == 1
......

2.strict參數(shù)

將strict參數(shù)設(shè)置為True堤如,即strict=True蒲列,若在執(zhí)行測試用例時結(jié)果為xpass,那么設(shè)置該參數(shù)后會使測試記錄為失敗搀罢,原因是如果您按照xfail預(yù)期的實際失敗標記了測試蝗岖。如果它突然通過,也許有人修復(fù)了該錯誤榔至,或者說明測試沒有按照您的想法進行抵赢。

import pytest

class TestPhoneLogin:
    @pytest.mark.xfail(strict=True)
    def test_error_phone_format(self):
        assert 1 == 1
......

雖然測試用例是正確的,但由于設(shè)置了strict參數(shù)為True,所以在最后執(zhí)行結(jié)果中仍然為Failed铅鲤。若將strict參數(shù)設(shè)置為False划提,那么最后的執(zhí)行結(jié)果為xpass。

3.reason 參數(shù)

如果需要說明期望測試失敗的理由邢享,可以添加reason參數(shù)

import pytest

class TestPhoneLogin:
    @pytest.mark.xfail(reason='期望失敗的理由')
    def test_error_phone_format(self):
        assert 1 == 2
......

4.raises 參數(shù)

如果要更具體地說明測試失敗的原因鹏往,可以在設(shè)置raises 參數(shù)。設(shè)置該參數(shù)后骇塘,如果執(zhí)行失敗伊履,則標記為常規(guī)Fail,除非是出現(xiàn)raises設(shè)置的錯誤款违,才會顯示xfail唐瀑。

import pytest

class TestPhoneLogin:
    @pytest.mark.xfail(raises=AttributeError)
    def test_error_phone_format(self):
        assert 1 == 2
......

若出現(xiàn)AttributeError錯誤時,才會顯示為xfail插爹,出現(xiàn)其它錯誤均顯示為Failed

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哄辣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赠尾,更是在濱河造成了極大的恐慌力穗,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萍虽,死亡現(xiàn)場離奇詭異睛廊,居然都是意外死亡形真,警方通過查閱死者的電腦和手機杉编,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咆霜,“玉大人邓馒,你說我怎么就攤上這事《昱鳎” “怎么了光酣?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長脉课。 經(jīng)常有香客問我救军,道長,這世上最難降的妖魔是什么倘零? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任唱遭,我火速辦了婚禮,結(jié)果婚禮上呈驶,老公的妹妹穿的比我還像新娘拷泽。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布司致。 她就那樣靜靜地躺著拆吆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脂矫。 梳的紋絲不亂的頭發(fā)上枣耀,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音羹唠,去河邊找鬼奕枢。 笑死,一個胖子當著我的面吹牛佩微,可吹牛的內(nèi)容都是我干的缝彬。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼哺眯,長吁一口氣:“原來是場噩夢啊……” “哼谷浅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奶卓,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤一疯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夺姑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墩邀,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年盏浙,在試婚紗的時候發(fā)現(xiàn)自己被綠了眉睹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡废膘,死狀恐怖竹海,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丐黄,我是刑警寧澤斋配,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站灌闺,受9級特大地震影響艰争,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桂对,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一甩卓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧接校,春花似錦猛频、人聲如沸狮崩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睦柴。三九已至,卻和暖如春毡熏,著一層夾襖步出監(jiān)牢的瞬間坦敌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工痢法, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狱窘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓财搁,卻偏偏與公主長得像蘸炸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尖奔,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

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