『德不孤』Pytest框架 — 1.Pytest測(cè)試框架介紹

1深夯、什么是單元測(cè)試框架

單元測(cè)試是指在軟件開(kāi)發(fā)當(dāng)中急膀,針對(duì)軟件的最小單位(函數(shù)邀跃,方法)進(jìn)行正確性的檢查測(cè)試。

2小槐、單元測(cè)試框架主要做什么

  • 測(cè)試發(fā)現(xiàn):從多個(gè)文件里面去找到我們需要的測(cè)試用例拇派。

  • 測(cè)試執(zhí)行:按照一定的順序和規(guī)則去執(zhí)行測(cè)試用例,并生成結(jié)果凿跳。

  • 測(cè)試判斷:通過(guò)斷言判斷預(yù)期結(jié)果和實(shí)際結(jié)果的差異件豌。

  • 測(cè)試報(bào)告:統(tǒng)計(jì)測(cè)試進(jìn)度,耗時(shí)控嗜,通過(guò)率等數(shù)據(jù)茧彤,并生成測(cè)試報(bào)告。

3疆栏、單元測(cè)試框架和自動(dòng)化測(cè)試框架有什么關(guān)系

(1)自動(dòng)化測(cè)試框架作用:

  1. 提高測(cè)試效率曾掂,降低自動(dòng)化用例的維護(hù)成本。

  2. 減少人工干預(yù)壁顶,提高測(cè)試的準(zhǔn)確性珠洗,增加代碼的重用性。

  3. 核心思想是讓不懂代碼的人若专,也能夠通過(guò)這個(gè)框架去實(shí)現(xiàn)自動(dòng)化測(cè)試许蓖。

(2)Pytest單元測(cè)試框架和自動(dòng)化測(cè)試框架的關(guān)系

單元測(cè)試框架:只是自動(dòng)化測(cè)試框架中的組成部分之一。

pom設(shè)計(jì)模式、數(shù)據(jù)驅(qū)動(dòng)膊爪、關(guān)鍵字驅(qū)動(dòng)自阱、全局配置文件的封裝、日志監(jiān)控米酬、SeleniumRequests的二次封裝沛豌、報(bào)告郵件、斷言體系的設(shè)計(jì)封裝等赃额,都是自動(dòng)化測(cè)試框架中的組成部加派。

4、Pytest測(cè)試框架說(shuō)明

Pytest是Python的?種單元測(cè)試框架爬早,全功能且非常成熟哼丈,同?帶的Unittest測(cè)試框架類(lèi)似,相?于Unittest框架使?起來(lái)更簡(jiǎn)潔筛严,效率更?醉旦。

Pytest測(cè)試框架,主要有以下幾個(gè)特點(diǎn):

  • Pytest是一個(gè)非常成熟的Python的單元框架桨啃,比Unittest更靈活车胡,容易上手。

  • Pytest支持參數(shù)化配置照瘾。

  • Pytest能夠支持簡(jiǎn)單的單元測(cè)試和復(fù)雜的功能測(cè)試匈棘,還可以和Selenium,Requests析命,Appium結(jié)合實(shí)現(xiàn)web自動(dòng)化主卫,接口自動(dòng)化,APP自動(dòng)化鹃愤。

  • 執(zhí)行測(cè)試過(guò)程中可以將某些測(cè)試跳過(guò)簇搅,或者對(duì)某些預(yù)期失敗的case標(biāo)記成失敗,也支持重復(fù)執(zhí)行失敗的case软吐。(跳過(guò)用例和reruns失敗用例重試)

    即:支持測(cè)試用例的skipxfail處理瘩将。

  • Pytest可以很好的和Jenkins進(jìn)行持續(xù)集成。

  • Pytest可以和allure生成非常美觀的測(cè)試報(bào)告凹耙。

  • 在Pytest框架下可以執(zhí)行Unittest框架的用例姿现。

  • Pytest有很多非常強(qiáng)大的第三方插件,并且這些插件能夠?qū)崿F(xiàn)很多實(shí)用的操作肖抱。

    并且也可以自定義Pytest插件备典。

Pytest官方文檔:https://docs.pytest.org/en/latest/contents.html

5、Pytest框架和Unittest框架區(qū)別

(1)Unittest

Unittest是Python標(biāo)準(zhǔn)庫(kù)中自帶的單元測(cè)試框架虐沥,Unittest有時(shí)候也被稱為PyUnit熊经,就像JUnit是Java語(yǔ)言的標(biāo)準(zhǔn)單元測(cè)試框架一樣泽艘,Unittest框架則是Python語(yǔ)言的標(biāo)準(zhǔn)單元測(cè)試框架欲险。

Unittest支持自動(dòng)化測(cè)試镐依,測(cè)試用例的初始化、關(guān)閉和測(cè)試用例的聚合等功能天试,它有一個(gè)很重要的特性:它是通過(guò)類(lèi)(class)的方式槐壳,將測(cè)試用例組織在一起。

(2)Pytest

Pytest是Python的另一個(gè)第三方單元測(cè)試庫(kù)喜每。它的目的是讓單元測(cè)試變得更容易务唐,并且也能擴(kuò)展到支持應(yīng)用層面復(fù)雜的功能測(cè)試。

(3)區(qū)別

1)用例編寫(xiě)規(guī)則:

  • Unittest測(cè)試框架:

    1带兜、提供test.cases枫笛,test suitestest fixtures刚照,test rurner相關(guān)類(lèi)刑巧,讓測(cè)試更加明確、方便无畔、可控啊楚。

    2、測(cè)試文件編寫(xiě)前浑彰,必須先導(dǎo)入Unittest測(cè)試框架恭理,import unittest

    3郭变、測(cè)試類(lèi)必須繼承unittest.TestCase類(lèi)颜价,且測(cè)試類(lèi)要Test_開(kāi)頭。(可去掉橫線诉濒,下同)

    4周伦、測(cè)試方法要以test_開(kāi)頭。

    5循诉、測(cè)試類(lèi)必須要用unittest.main()方法執(zhí)行横辆。

  • Pytest測(cè)試框架:

    1、基于Unittest的擴(kuò)展框架茄猫,比Unittest更簡(jiǎn)潔狈蚤、更高效。

    2划纽、測(cè)試文件必須test_開(kāi)頭脆侮。

    3、測(cè)試類(lèi)命名必須以test_開(kāi)頭勇劣。

    4靖避、測(cè)試方法必須test_開(kāi)頭(函數(shù)也一樣)潭枣。

    (規(guī)則可自定義。)

  • 總結(jié):

    Unittest:用例格式復(fù)雜幻捏,不能兼客Pytest用例盆犁。

    Pytest:用例格式簡(jiǎn)單,可以兼容Unittest用例篡九。

2)用例的前置和后置:

  • Unittest測(cè)試框架:

    提供了setUp/tearDowm方法谐岁,只能針對(duì)所有用例。

  • Pytest測(cè)試框架:

    1榛臼、Pytest提供了模塊級(jí)伊佃、函數(shù)級(jí)、類(lèi)級(jí)沛善、方法級(jí)的setup/teardown航揉,比Unittest的setup/tearDowm方法更活。

    • 模塊級(jí)setup_module/teardown_module:開(kāi)始于模塊始末金刁,全局帅涂。

    • 類(lèi)級(jí)setup_class/teardown_class:只在類(lèi)中前后運(yùn)行一次(類(lèi)中)。

    • 函數(shù)級(jí)setup_function/teardow_function:只對(duì)函數(shù)用例生效(不在類(lèi)中)胀葱。

    • 方法級(jí)setup_method/teardown_method:開(kāi)始于方法始末(在類(lèi)中)漠秋。

    • 類(lèi)里面的setup/teardown:運(yùn)行在調(diào)用方法的前后。

    2抵屿、函數(shù)前加@pytest.fixtures()裝飾器庆锦,在測(cè)試用例中使用Fixture函數(shù)。

    可作用于function\module\class\session中轧葛。

    fixture相對(duì)于setup/teardown來(lái)說(shuō)的優(yōu)勢(shì)搂抒,如下:

    • 命名方式靈活,不局限于setup/teardown尿扯。

    • conftest.py配置里可以實(shí)現(xiàn)數(shù)共享求晶,無(wú)需import就可自動(dòng)找到配置數(shù)據(jù),可供多個(gè).py文件調(diào)用衷笋。

    • scope="module"芳杏,可以實(shí)現(xiàn)多個(gè).py文件跨文件共享前置。

    • scope="session"辟宗,可以實(shí)現(xiàn)多個(gè).py文件跨文件使用一個(gè)session來(lái)完成用例爵赵。

    • 使用yeild返回,相當(dāng)于teardown的作用泊脐。

3)參數(shù)化:

  • Unittest測(cè)試框架:結(jié)合DDT實(shí)現(xiàn)參數(shù)化空幻。

  • Pytest測(cè)試框架:直接使用@pytest.mark.parametrize裝飾器。

4)斷言:

  • Unittest測(cè)試框架:可使用提供的assertEqual容客,assertIn秕铛、assertTrue约郁,assertFalse斷言方法。

  • Pytest測(cè)試框架:直接使用Python語(yǔ)言內(nèi)置的assert表達(dá)式但两。

5)用例分類(lèi)執(zhí)行:

  • Unittest測(cè)試框架:默認(rèn)執(zhí)行全部用例鬓梅,可以通過(guò)加載testsuite執(zhí)行部分模塊的用例。

  • Pytest測(cè)試框架:可以通過(guò)@pytest.mark來(lái)標(biāo)記測(cè)試用例镜遣,執(zhí)行命令前加上參數(shù)"-m"己肮,即可運(yùn)行標(biāo)記的用例士袄。

6)失敗重運(yùn)行:

  • Unittest測(cè)試框架:無(wú)悲关。

  • Pytest測(cè)試框架:支持用例執(zhí)行失敗重跑,提供了pytest-rerunfailures插件娄柳。

7)報(bào)告:

  • Unittest測(cè)試框架:使用HTMLTestRunnerNew庫(kù)生成測(cè)試報(bào)告寓辱。

  • Pytest測(cè)試框架:使用pytest-HTMLallure插件生成測(cè)試報(bào)告赤拒。

參考:https://www.cnblogs.com/cuitang/p/11635103.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秫筏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挎挖,更是在濱河造成了極大的恐慌这敬,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕉朵,死亡現(xiàn)場(chǎng)離奇詭異崔涂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)始衅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)冷蚂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人汛闸,你說(shuō)我怎么就攤上這事蝙茶。” “怎么了诸老?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵隆夯,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我别伏,道長(zhǎng)蹄衷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任畸肆,我火速辦了婚禮宦芦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轴脐。我一直安慰自己调卑,他們只是感情好抡砂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著恬涧,像睡著了一般注益。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溯捆,一...
    開(kāi)封第一講書(shū)人閱讀 49,850評(píng)論 1 290
  • 那天丑搔,我揣著相機(jī)與錄音,去河邊找鬼提揍。 笑死啤月,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的劳跃。 我是一名探鬼主播谎仲,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刨仑!你這毒婦竟也來(lái)了郑诺?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤杉武,失蹤者是張志新(化名)和其女友劉穎辙诞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體轻抱,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飞涂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了十拣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片封拧。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖夭问,靈堂內(nèi)的尸體忽然破棺而出泽西,到底是詐尸還是另有隱情,我是刑警寧澤缰趋,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布捧杉,位于F島的核電站,受9級(jí)特大地震影響秘血,放射性物質(zhì)發(fā)生泄漏味抖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一灰粮、第九天 我趴在偏房一處隱蔽的房頂上張望仔涩。 院中可真熱鬧,春花似錦粘舟、人聲如沸熔脂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霞揉。三九已至旬薯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間适秩,已是汗流浹背绊序。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秽荞,地道東北人骤公。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蚂会,于是被迫代替她去往敵國(guó)和親淋样。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

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