1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        五大自動(dòng)化測(cè)試的 Python 框架

        共 5100字,需瀏覽 11分鐘

         ·

        2021-07-12 10:06

        自2018年被評(píng)選為編程語言以來,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指數(shù)中排名第三個(gè),僅次于Java和C。隨著該編程語言的廣泛使用,基于Python的自動(dòng)化測(cè)試框架也應(yīng)運(yùn)而生,且不斷發(fā)展與豐富。
        因此,開發(fā)與測(cè)試人員在為手頭的項(xiàng)目選擇測(cè)試框架時(shí),需要考慮許多方面的因素,其中包括:框架的腳本質(zhì)量,測(cè)試用例的簡(jiǎn)單性,以及運(yùn)行模塊可能存在的技術(shù)弱點(diǎn)。為了避免出現(xiàn)“選擇困難癥”,我在此為大家準(zhǔn)備了五種Python類型的自動(dòng)化測(cè)試框架,以供比較和討論。

        1.Robot Framework

        作為最重要的Python測(cè)試框架之一,Robot Framework主要被用在測(cè)試驅(qū)動(dòng)(test-driven)類型的開發(fā)與驗(yàn)收中。雖然是由Python開發(fā)而來,但是它也可以在基于.Net的IronPython和基于Java的Jython上運(yùn)行。同時(shí),作為一個(gè)Python框架,Robot還能夠兼容諸如Windows、MacOS、以及Linux等平臺(tái)。

        使用先決條件

        在使用Robot Framework(RF)之前,您需要先安裝Python 2.7.14及以上的版本。我推薦您使用Python 3.6.4,以確保適當(dāng)?shù)淖⑨屇軌虮惶砑拥酱a段中,并能夠跟蹤程序的更改。同時(shí),您還需要安裝Python包管理器--pip。
        當(dāng)然,您也必須下載相應(yīng)的開發(fā)框架,例如:在開發(fā)者圈子里比較流行的PyCharm社區(qū)版。另外,由于其代碼段本身并不依賴于任何IDE,因此您完全可以沿用手頭既有的IDE工具。

        優(yōu)點(diǎn)

        • 通過使用關(guān)鍵字驅(qū)動(dòng)測(cè)試(keyword-driven-test)的方法,它能夠幫助測(cè)試人員輕松地創(chuàng)建具有可讀性的測(cè)試用例,進(jìn)而簡(jiǎn)化了整個(gè)自動(dòng)化的過程。
        • 用戶能夠輕松地測(cè)試數(shù)據(jù)中的語法。
        • 因?yàn)槭怯筛鞣N通用工具和測(cè)試庫所組成,所以它不但擁有龐大的生態(tài)系統(tǒng),而且可以在單獨(dú)的項(xiàng)目中使用其各個(gè)元素。
        • 由于擁有許多類型的API,因此該框架具有高度的可擴(kuò)展性。
        • 雖然并非內(nèi)置功能,但是Robot可以通過Selenium Grid(請(qǐng)參見https://www.lambdatest.com/blog/lambdatest-now-live-with-an-online-selenium-grid-for-automated-cross-browser-testing/),來幫助用戶運(yùn)行各種并行測(cè)試。

        缺點(diǎn)

        雖然有著上述各種便利,但是Robot Framework在創(chuàng)建自定義的HTML報(bào)告方面比較繁瑣。您頂多能用它來生成xUnit格式的簡(jiǎn)短報(bào)告。
        另外,Robot Framework在并行測(cè)試方面也并不見長(zhǎng)。

        Robot的特點(diǎn)與競(jìng)品比較

        由于Robot具有豐富的內(nèi)置庫,并能使用更為簡(jiǎn)單的面向測(cè)試的DSL(Domain Specific Language),因此如果您是自動(dòng)化測(cè)試領(lǐng)域的新手,并且缺乏開發(fā)經(jīng)驗(yàn)的話,那么將它作為Python測(cè)試框架要比下面將要提到的Pytest或Pyunit,更容易上手一些。當(dāng)然,如果您需要開發(fā)復(fù)雜的自動(dòng)化框架,那么還請(qǐng)使用Pytest、或其他類型的Python框架。

        2.Pytest

        適用于多種軟件測(cè)試的Pytest,是另一個(gè)Python類型的自動(dòng)化測(cè)試框架。憑借著其開源和易學(xué)的特點(diǎn),該工具經(jīng)常被QA(質(zhì)量分析)團(tuán)隊(duì)、開發(fā)團(tuán)隊(duì)、個(gè)人團(tuán)隊(duì)、以及各種開源項(xiàng)目所使用。鑒于Pytest具有“斷言重寫(assert rewriting)”之類的實(shí)用功能,許多大型互聯(lián)網(wǎng)應(yīng)用,如Dropbox和Mozilla,都已經(jīng)從下面將要提到的unittest(Pyunit)切換到了Pytest之上。

        使用先決條件

        除了基本的Python知識(shí),用戶并不需要更多的技術(shù)儲(chǔ)備。另外,用戶只需要有一臺(tái)帶有命令行界面的測(cè)試設(shè)備,并且安裝好了Python包管理器、以及可用于開發(fā)的IDE工具。

        優(yōu)點(diǎn)

        • 過去,開發(fā)人員必須將他們的測(cè)試包含在各種大型的類中。如今,Pytest可以讓用戶寫出更為緊湊的測(cè)試套件。
        • 其他的測(cè)試工具會(huì)要求開發(fā)或測(cè)試人員使用調(diào)試器,或以日志檢查的方式檢測(cè)某個(gè)特定值的來源。而用戶在用Pytest來編寫測(cè)試用例時(shí),完全可以將所有的值都存儲(chǔ)在測(cè)試用例之中,直到再獲悉有哪些值失敗了、以及哪些值得到了斷言。
        • 由于涉及到的樣板代碼(boilerplate code)并不多,因此用戶能夠容易地編寫和理解各種測(cè)試。
        • 測(cè)試夾具(Fixture)函數(shù)常被用來向測(cè)試函數(shù)添加某個(gè)參數(shù),并返回不同的值。在Pytest中,您可以通過使用一個(gè)夾具來模塊化另外一個(gè)。同時(shí),用戶可以使用多個(gè)夾具,在無需重寫測(cè)試用例的情況下,將測(cè)試覆蓋到所有參數(shù)的組合。
        • Pytest開發(fā)人員通過發(fā)布各種實(shí)用插件,來保持框架的可擴(kuò)展性。例如:pytest-xdist可以在不使用其他測(cè)試器的情況下,被用于執(zhí)行并行測(cè)試。同時(shí),單元測(cè)試也可以在無需復(fù)制任何代碼的情況下,實(shí)現(xiàn)參數(shù)化。
        • 通過為開發(fā)人員提供各種特殊的例程,它能夠使得測(cè)試用例的編寫更為簡(jiǎn)單、更不易出錯(cuò),同時(shí)代碼也會(huì)變得更短、更易被理解。

        缺點(diǎn)

        上述提及的特殊例程,也意味著用戶必須放棄一定的兼容性。雖然方便了用戶編寫測(cè)試用例,但是這些用例卻無法與任何其他的測(cè)試框架一起被使用。

        Pytest的特點(diǎn)與競(jìng)品比較

        就編寫功能性測(cè)試用例和開發(fā)復(fù)雜的框架而言,Pytest勝過下面將要提到的UnitTest。不過,它和Robot Framework類似,僅適用于開發(fā)出簡(jiǎn)單的測(cè)試框架。
        如果您正在考慮使用Pytest,請(qǐng)進(jìn)一步參考《使用Pytest和Selenium WebDriver實(shí)現(xiàn)測(cè)試自動(dòng)化》。

        3.UnitTest/PyUnit

        受到了JUnit啟發(fā)的UnitTest/PyUnit,也是一種標(biāo)準(zhǔn)化的針對(duì)單元測(cè)試的Python類自動(dòng)化測(cè)試框架。它的基類TestCase提供了各種斷言方法、以及所有清理和設(shè)置的例程。因此,TestCase子類中的每一種方法都是以“test”作為名詞前綴,以標(biāo)識(shí)它們能夠被作為測(cè)試用例所運(yùn)行。用戶可以使用load方法和TestSuite類來分組、并加載各種測(cè)試。
        當(dāng)然,您也可以通過聯(lián)合使用,來構(gòu)建自定義的測(cè)試運(yùn)行器。正如我們使用Junit去測(cè)試Selenium那樣,UnitTest也會(huì)用到UnitTest-sml-reporting、并能生成各種XML類型的報(bào)告。

        使用先決條件

        由于UnitTest默認(rèn)使用了Python,因此我們并不需要什么先決條件。除了需要具備Python框架的基本知識(shí),您也可以額外地安裝pip、以及用于開發(fā)的IDE工具。

        優(yōu)點(diǎn)

        • 開發(fā)人員并不需要安裝任何其他的模塊。
        • UnitTest是xUnit的衍生產(chǎn)品,其工作原理與其他xUnit框架十分類似。因此對(duì)于那些沒有過硬Python背景的人來說,也能很快地上手。
        • 用戶能夠以更為簡(jiǎn)單的方式運(yùn)行單個(gè)測(cè)試用例。您只需在終端上預(yù)定好名稱,該框架便可靈活地執(zhí)行各種用例的測(cè)試,并產(chǎn)生精煉的輸出。
        • 它能夠在幾毫秒內(nèi)生成各種測(cè)試報(bào)告。

        缺點(diǎn)

        雖然該框架常用snake_case來命名各種Python代碼,但是由于它源自Junit,因此仍保留了一些傳統(tǒng)的camelCase命名方法。這往往會(huì)讓人產(chǎn)生混淆。
        由于它過多地支持了抽象方法,因此造成了測(cè)試代碼的目的有時(shí)不夠清晰。需要大量的樣板代碼。

        PyUnit的特點(diǎn)與競(jìng)品比較

        和部分Python開發(fā)人員的觀點(diǎn)相似,我認(rèn)為:Pytest能夠培養(yǎng)測(cè)試人員以非常緊湊的方式編寫出更好的自動(dòng)化代碼,這一編程習(xí)慣。盡管UnitTest是Python默認(rèn)的自動(dòng)化測(cè)試框架,但是其工作原理、及命名規(guī)則仍與標(biāo)準(zhǔn)的Python代碼略有不同。同時(shí),它也需要太多的樣板代碼。因此該框架并不太受歡迎。

        4.Behave

        我們都知道:行為驅(qū)動(dòng)開發(fā)(behavior-driven development,BDD),是一種基于敏捷軟件開發(fā)的方法。它能夠鼓勵(lì)開發(fā)人員、業(yè)務(wù)參與者和QA人員,三者之間的協(xié)作。作為另一種Python測(cè)試框架,Behave允許團(tuán)隊(duì)避開各種復(fù)雜的情況,去執(zhí)行BDD測(cè)試。從本質(zhì)上說,該框架與SpecFlow和Cucumber非常相似,常被用于執(zhí)行自動(dòng)化測(cè)試。用戶可以通過簡(jiǎn)單易讀的語言來編寫測(cè)試用例,并能夠在其執(zhí)行期間粘貼到代碼之中。而且,那些被設(shè)定的行為規(guī)范與步驟,也可以被重用到其他的測(cè)試方案中。

        使用先決條件

        任何具備Python基礎(chǔ)知識(shí)的人都可以使用Behave。其他先決條件還包括:
        您必須先安裝Python 2.7.14及以上的版本。
        需要通過Python包管理器或pip來與Behave協(xié)作。
        大多數(shù)開發(fā)人員會(huì)選擇Pycharm作為開發(fā)環(huán)境,當(dāng)然您也可以選用其他的IDE工具。

        優(yōu)點(diǎn)

        • 由于系統(tǒng)行為使用了半正式(semi-formal)語言、以及域詞匯表(domain vocabulary),因此Behave有助于在組織中保持一致性的行為。
        • 讓那些工作在不同模塊上的開發(fā)團(tuán)隊(duì),通過協(xié)調(diào)處理來具有類似的特征。
        • 其構(gòu)建的各個(gè)功能塊能夠執(zhí)行各種測(cè)試用例。
        • 由于具有更多值得用戶推理和思考的細(xì)節(jié),因此目標(biāo)產(chǎn)品會(huì)具有更好的規(guī)范性。
        • 根據(jù)類似的規(guī)范格式,它能夠讓項(xiàng)目經(jīng)理和利益相關(guān)者,對(duì)開發(fā)團(tuán)隊(duì)和QA團(tuán)隊(duì)的輸出具有更清楚地了解。

        缺點(diǎn)

        只適用于黑盒測(cè)試。

        Behave的特點(diǎn)與競(jìng)品比較

        Behave最適合于諸如簡(jiǎn)單Web測(cè)試之類的黑盒測(cè)試。但是,對(duì)于那些具有復(fù)雜場(chǎng)景的集成測(cè)試與單元測(cè)試而言,Behave并不是一個(gè)很好的選擇。作為Behave的替代品,一些開發(fā)與測(cè)試人員會(huì)推薦使用pytest-bdd。該工具融合了Pytest的所有優(yōu)點(diǎn),并實(shí)現(xiàn)了各種行為驅(qū)動(dòng)測(cè)試的場(chǎng)景。
        如果您正在考慮使用Behave,那么您可以借用《Behave with Selenium》(請(qǐng)參見https://www.lambdatest.com/support/docs/display/TD/Behave+with+Selenium+-+Running+Behave+Automation+Scripts+on+LambdaTest+Selenium+Grid)中提到的自動(dòng)化腳本。

        5.Lettuce

        Lettuce是另一種基于Cucumber和Python的行為驅(qū)動(dòng)類自動(dòng)化工具。Lettuce主要專注于那些具有行為驅(qū)動(dòng)開發(fā)特征的普通任務(wù)。它不但簡(jiǎn)單易用,而且能夠使得整個(gè)測(cè)試過程更流暢、甚至更有趣。

        使用先決條件

        您需要安裝帶有IDE的Python 2.7.14、及以上的版本。當(dāng)然,您也可以使用Pycharm或任何其他IDE工具。同時(shí),您還需要安裝Python包管理器。

        優(yōu)點(diǎn)

        • 和其他BDD測(cè)試框架類似,Lettuce能夠讓開發(fā)人員創(chuàng)建多個(gè)場(chǎng)景,并用簡(jiǎn)單的自然語言去描述不同的功能。
        • 根據(jù)類似的規(guī)范格式,開發(fā)與QA團(tuán)隊(duì)能夠協(xié)調(diào)共事。
        • 對(duì)于黑盒測(cè)試而言,Lettuce非常適合于那些行為驅(qū)動(dòng)的測(cè)試用例。

        缺點(diǎn)

        為了成功地實(shí)現(xiàn)行為驅(qū)動(dòng)測(cè)試,開發(fā)團(tuán)隊(duì)、QA人員以及利益相關(guān)者之間需要持續(xù)進(jìn)行溝通。倘若缺乏此類溝通,則會(huì)產(chǎn)生流程模糊不清,并讓團(tuán)隊(duì)遇到問題。競(jìng)品比較
        在普通開發(fā)人員和自動(dòng)化測(cè)試人員看來,Cucumber在執(zhí)行BDD測(cè)試方面更為實(shí)用。而在Python開發(fā)和QA人員看來,Pytest-bdd才是的。Pytest的強(qiáng)大之處在于:其框架實(shí)現(xiàn)了緊湊且易于理解的代碼,并能緊密地結(jié)合到行為驅(qū)動(dòng)的測(cè)試之中。

        結(jié)語

        綜上所述,在上述五種自動(dòng)化測(cè)試的Python框架中,Pytest、Robot Framework和UnitTest可主要用于功能與單元測(cè)試,而Lettuce和Behave僅適用于行為驅(qū)動(dòng)測(cè)試。通過進(jìn)一步比較,我們認(rèn)為:對(duì)于功能測(cè)試而言,Pytest是的。如果您是基于Python自動(dòng)化測(cè)試的新手,那么Robot Framework是的入門工具。雖然其功能有所受限,但是它非常容易上手。對(duì)于基于Python的BDD測(cè)試而言,Lettuce和Behave同樣優(yōu)秀。不過,如果你已經(jīng)有了一定的Pytest經(jīng)驗(yàn),那么請(qǐng)使用Pytest-bdd,希望本文能夠幫助您選出合適的Python測(cè)試框架,并順利開展測(cè)試工作。


        來源:http://suo.im/5TVq0X


        -------- THE END --------

        ??

        瀏覽 39
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            被男人狂揉吃奶胸视频 | 天码人妻一区二区三区在线看 | 一级毛在线观看 | 欧美老妇另类XXXX | 亚欧成人视频 | 日本女优一区 | 日韩免费黄色电影网站 | 国产精品15p | 人人摸天天| 日本一区二区精品91豆花 |