第5章 單元測(cè)試框架_第1頁(yè)
第5章 單元測(cè)試框架_第2頁(yè)
第5章 單元測(cè)試框架_第3頁(yè)
第5章 單元測(cè)試框架_第4頁(yè)
第5章 單元測(cè)試框架_第5頁(yè)
已閱讀5頁(yè),還剩120頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章單元測(cè)試框架《自動(dòng)化測(cè)試應(yīng)用教程(Web+App)》學(xué)習(xí)目標(biāo)/Target了解unittest框架的簡(jiǎn)介,能夠說出unittest框架的作用了解unittest框架的核心要素,能夠說出unittest框架的5個(gè)核心要素掌握unittest框架的使用方式,能夠編寫unittest示例掌握unittest框架中常用的斷言方法,能夠判斷測(cè)試用例是否通過掌握HTMLTestRunner插件的使用方式,能夠生成HTML測(cè)試報(bào)告學(xué)習(xí)目標(biāo)/Target了解pytest框架的簡(jiǎn)介,能夠說出pytest框架的特點(diǎn)掌握pytest框架的安裝方式,能夠使用pip命令安裝pytest框架掌握pytest框架的使用方式,能夠編寫pytest示例掌握pytest中常用的斷言表達(dá)式,能夠判斷測(cè)試用例是否通過掌握Fixture的使用方式,能夠靈活使用Fixture中4個(gè)級(jí)別對(duì)應(yīng)的方法學(xué)習(xí)目標(biāo)/Target掌握pytest中配置文件的使用方式,能夠設(shè)置配置文件中的常用配置項(xiàng)掌握pytest-ordering插件的使用方式,能夠控制測(cè)試用例的執(zhí)行順序掌握跳過測(cè)試用例的方式,能夠在測(cè)試程序中跳過指定的測(cè)試用例學(xué)習(xí)目標(biāo)/Target掌握pytest-rerunfailures插件的使用方式,能夠?qū)y(cè)試用例進(jìn)行失敗重試掌握pytest參數(shù)化的使用方式,能夠減少測(cè)試程序中的冗余代碼掌握pytest-html插件與allure-pytest插件的使用方式,能夠生成測(cè)試報(bào)告章節(jié)概述/Summary前面我們已學(xué)習(xí)了自動(dòng)化測(cè)試的腳本的編寫,如果想要對(duì)Web項(xiàng)目中最小的功能模塊進(jìn)行驗(yàn)證,并且可以靈活管理與運(yùn)行測(cè)試用例、添加斷言、輸出測(cè)試報(bào)告,就需要使用單元測(cè)試框架來(lái)完成這些測(cè)試。經(jīng)常與Selenium結(jié)合使用的單元測(cè)試框架有unittest和pytest,下面將對(duì)這兩個(gè)單元測(cè)試框架進(jìn)行詳細(xì)講解。目錄/Contents01unittest框架02pytest框架unittest框架5.15.1.1unittest框架簡(jiǎn)介

先定一個(gè)小目標(biāo)!了解unittest框架的簡(jiǎn)介,能夠說出unittest框架的作用5.1.1unittest框架簡(jiǎn)介unittest是Python標(biāo)準(zhǔn)庫(kù)中自帶的一個(gè)單元測(cè)試框架,該框架主要用于管理Web自動(dòng)化測(cè)試程序中的測(cè)試用例,該框架中不僅提供了豐富的斷言方法,便于判斷每條測(cè)試用例的執(zhí)行結(jié)果是否成功,而且可以生成測(cè)試報(bào)告,便于測(cè)試人員查看測(cè)試結(jié)果,另外還可以同時(shí)執(zhí)行不同文件中的多條測(cè)試用例。由于unittest框架是Python標(biāo)準(zhǔn)庫(kù)中自帶的單元測(cè)試框架,所以創(chuàng)建完Web自動(dòng)化測(cè)試程序后,程序的單元測(cè)試框架默認(rèn)使用的是unittest框架,該框架不用手動(dòng)安裝,可以直接使用。5.1.2unittest的核心要素

先定一個(gè)小目標(biāo)!了解unittest框架的核心要素,能夠說出unittest框架的5個(gè)核心要素5.1.2unittest的核心要素unittest中有5個(gè)核心要素,分別是TestCase、TestSuite、TextTestRunner、TextTestResult、Fixture。5.1.2unittest的核心要素TestCase表示測(cè)試用例,測(cè)試用例是unittest框架中執(zhí)行測(cè)試的最小單元,它通過unittest框架提供的斷言方法來(lái)驗(yàn)證一組特定的輸入操作或輸入后得到的具體響應(yīng)結(jié)果是否是正確的。在自動(dòng)化測(cè)試程序中可以創(chuàng)建一個(gè)類繼承TestCase類,此時(shí)該類中定義的每個(gè)測(cè)試方法都是一個(gè)測(cè)試用例,這些測(cè)試方法必須以test開頭。1.TestCase5.1.2unittest的核心要素下面創(chuàng)建一個(gè)測(cè)試類,在該測(cè)試類中定義一個(gè)測(cè)試方法來(lái)測(cè)試一個(gè)函數(shù)是否為求和函數(shù),具體代碼如下。importunittestdefmy_sum(a,b):returna+bclassMyTest(unittest.TestCase):deftest_01(self):print(my_sum(4,6))5.1.2unittest的核心要素TestSuite表示測(cè)試套件,一個(gè)測(cè)試套件中可以包含多條測(cè)試用例。測(cè)試套件的作用是將不同文件中的測(cè)試用例放在一個(gè)測(cè)試套件的對(duì)象中,這樣執(zhí)行一個(gè)測(cè)試套件就可以執(zhí)行測(cè)試套件中存放的所有測(cè)試用例。在自動(dòng)化測(cè)試程序中,可以首先創(chuàng)建測(cè)試套件的對(duì)象,然后調(diào)用addTest()方法將每條測(cè)試用例添加到測(cè)試套件的對(duì)象中。2.TestSuite5.1.2unittest的核心要素如果想要通過測(cè)試套件測(cè)試一個(gè)文件中的所有測(cè)試用例,則需要將這些測(cè)試用例添加到測(cè)試套件對(duì)象中,具體代碼如下。deftest_02(self):print(my_sum(2,3))5.1.2unittest的核心要素下面創(chuàng)建一個(gè)名為testsuite.py的文件,在該文件中創(chuàng)建TestSuite類的對(duì)象,然后通過該對(duì)象的addTest()方法將mytest.py文件中的所有測(cè)試用例添加到TestSuite類的對(duì)象中,具體代碼如下。importunittestfrommytestimportMyTestsuite=unittest.TestSuite()suite.addTest(MyTest("test_01"))suite.addTest(MyTest("test_02"))5.1.2unittest的核心要素TextTestRunner表示測(cè)試執(zhí)行器,用于執(zhí)行測(cè)試用例或測(cè)試套件并返回測(cè)試結(jié)果。TextTestRunner類是運(yùn)行測(cè)試用例的驅(qū)動(dòng)類,該類中提供了run()方法來(lái)運(yùn)行測(cè)試用例或測(cè)試套件。3.TextTestRunner5.1.2unittest的核心要素使用TextTestRunner類中的run()方法來(lái)執(zhí)行測(cè)試套件suite的示例代碼如下。#創(chuàng)建TextTestRunner類的對(duì)象runner=unittest.TextTestRunner()#調(diào)用run()方法執(zhí)行測(cè)試套件suiterunner.run(suite)5.1.2unittest的核心要素TextTestResult表示測(cè)試結(jié)果,也稱為測(cè)試報(bào)告,它用于展示所有測(cè)試用例執(zhí)行成功或失敗的結(jié)果信息。在測(cè)試程序中執(zhí)行完測(cè)試用例或測(cè)試套件后,會(huì)將測(cè)試結(jié)果輸出到控制臺(tái)中。由于unittest框架中的測(cè)試結(jié)果顯示的樣式不美觀,并且可讀性較差,所以通常會(huì)使用第三方插件HTMLTestRunner來(lái)展示測(cè)試用例的運(yùn)行結(jié)果。4.TextTestResult5.1.2unittest的核心要素Fixture表示測(cè)試固件,用于對(duì)測(cè)試環(huán)境的初始化和銷毀。測(cè)試固件可以理解為在測(cè)試之前或之后需要做的一些操作。例如測(cè)試代碼執(zhí)行之前,可能需要打開瀏覽器、創(chuàng)建數(shù)據(jù)庫(kù)連接等;測(cè)試結(jié)束之后,可能需要清理測(cè)試環(huán)境、關(guān)閉數(shù)據(jù)庫(kù)連接等。5.Fixture5.1.2unittest的核心要素Fixture的方法級(jí)別是指在測(cè)試類中定義setUp()方法與tearDown()方法,這兩個(gè)方法在每個(gè)測(cè)試用例被執(zhí)行前后都會(huì)被調(diào)用,這兩個(gè)方法的具體介紹如下。setUp()方法:在測(cè)試用例執(zhí)行前會(huì)自動(dòng)被調(diào)用,該方法主要用于處理測(cè)試用例執(zhí)行前需要對(duì)測(cè)試環(huán)境做的一些初始化操作。tearDown()方法:在測(cè)試用例執(zhí)行后會(huì)自動(dòng)被調(diào)用,該方法主要用于處理測(cè)試用例執(zhí)行后需要對(duì)測(cè)試環(huán)境做的一些銷毀操作。Fixture的控制級(jí)別分為方法級(jí)別、類級(jí)別和模塊級(jí)別,這些控制級(jí)別的具體介紹如下。(1)方法級(jí)別5.1.2unittest的核心要素Fixture的類級(jí)別是指在測(cè)試類中定義setUpClass()方法和tearDownClass()方法,這兩個(gè)方法都需要添加裝飾器@classmethod,且在測(cè)試類被運(yùn)行前后都會(huì)被調(diào)用,這兩個(gè)方法的具體介紹如下。setUpClass()方法:在測(cè)試類運(yùn)行前會(huì)自動(dòng)被調(diào)用,該方法主要用于處理測(cè)試類運(yùn)行前需要對(duì)測(cè)試環(huán)境做的一些初始化操作。tearDownClass()方法:在測(cè)試類運(yùn)行后會(huì)自動(dòng)被調(diào)用,該方法主要用于處理測(cè)試類運(yùn)行后需要對(duì)測(cè)試環(huán)境做的一些銷毀操作。(2)類級(jí)別5.1.2unittest的核心要素Fixture的模塊級(jí)別是指在模塊中定義setUpModule()方法和tearDownModule()方法,這兩個(gè)方法在模塊被運(yùn)行前后都會(huì)被調(diào)用,這兩個(gè)方法的具體介紹如下。setUpModule()方法:在模塊運(yùn)行前會(huì)自動(dòng)被調(diào)用,該方法主要用于處理模塊運(yùn)行前需要對(duì)測(cè)試環(huán)境做的一些初始化操作。tearDownModule()方法:在模塊運(yùn)行后會(huì)自動(dòng)被調(diào)用,該方法主要用于處理模塊運(yùn)行后需要對(duì)測(cè)試環(huán)境做的一些銷毀操作。(3)模塊級(jí)別多學(xué)一招TestLoader類用于加載TestCase到TestSuite類的對(duì)象中,也就是說將想要運(yùn)行的測(cè)試用例封裝到測(cè)試套件中。加載測(cè)試用例時(shí)需要調(diào)用TestLoader類的discover()方法,該方法用于自動(dòng)搜索指定目錄下指定開頭的.py文件,并將這些文件中查找到的測(cè)試用例封裝到測(cè)試套件中。

discover()方法的語(yǔ)法格式如下。TestLoader類discover(start_dir,pattern='test*.py')discover()方法的參數(shù)start_dir表示要搜索的目錄,參數(shù)pattern的值是一個(gè)通配符,也就是搜索以“*”前面的字母為開頭的.py文件。discover()方法的返回值是TestSuite類的對(duì)象。多學(xué)一招如果想要將一個(gè)模塊中的所有測(cè)試用例都封裝到TestSuite類的對(duì)象中,使用TestSuite類的addTest()方法添加測(cè)試用例會(huì)比較煩瑣,代碼量也會(huì)增多,此時(shí)可以使用TestLoader類的discover()方法將一個(gè)模塊中的所有測(cè)試用例封裝到TestSuite類的對(duì)象中。假設(shè)使用TestLoader類將mytest.py文件中所有測(cè)試用例都封裝到TestSuite類的對(duì)象中,具體示例代碼如下。TestLoader類suite=unittest.TestLoader().discover(".","my*.py")discover()方法中的參數(shù)“.”表示程序的當(dāng)前目錄,參數(shù)“my*.py”表示要搜索文件名稱以“my”開頭的.py文件。多學(xué)一招需要注意的是,TestSuite類調(diào)用addTest()方法可以將測(cè)試類或指定的測(cè)試用例封裝到測(cè)試套件中,TestLoader類可以將指定目錄下指定開頭的.py文件中的所有測(cè)試用例一次性封裝到測(cè)試套件中,但是不能封裝指定的某個(gè)測(cè)試用例。TestLoader類5.1.3unittest示例

先定一個(gè)小目標(biāo)!掌握unittest框架的使用方式,能夠編寫unittest示例5.1.3unittest示例測(cè)試類需要繼承TestCase類測(cè)試類中至少有一條可執(zhí)行的測(cè)試用例測(cè)試用例的名稱必須以“test”開頭使用unittest編寫測(cè)試用例的3個(gè)基本要素5.1.3unittest示例下面根據(jù)unittest編寫測(cè)試用例的3個(gè)基本要素來(lái)編寫一個(gè)簡(jiǎn)單的測(cè)試用例,該測(cè)試用例用于檢測(cè)定義的函數(shù)是否為求和函數(shù),具體代碼如下。importunittestdefmy_sum(a,b):returna+bclassMyTest(unittest.TestCase):deftest_sum(self):s=my_sum(4,6)self.assertEqual(s,10)5.1.4unittest斷言

先定一個(gè)小目標(biāo)!掌握unittest框架中常用的斷言方法,能夠判斷測(cè)試用例是否通過5.1.4unittest斷言在自動(dòng)化測(cè)試腳本執(zhí)行時(shí),一般都是無(wú)人值守的狀態(tài),當(dāng)執(zhí)行完測(cè)試腳本后,并不知道執(zhí)行結(jié)果是否符合預(yù)期的結(jié)果,此時(shí)需要在測(cè)試腳本中添加斷言,斷言是讓程序判斷測(cè)試執(zhí)行的結(jié)果是否符合預(yù)期結(jié)果的過程。5.1.4unittest斷言方法說明assertTrue(expr)驗(yàn)證expr是否為TrueassertFalse(expr)驗(yàn)證expr是否為FalseassertEqual(first,second)驗(yàn)證first是否等于secondassertNotEqual(first,second)驗(yàn)證first是否不等于secondassertIsNone(obj)驗(yàn)證obj是否為NoneassertIsNotNone(obj)驗(yàn)證obj是否不為NoneassertIn(member,container)驗(yàn)證container中是否包含memberassertNotIn(member,container)驗(yàn)證container中是否不包含memberunittest中常用的斷言方法如下表所示。5.1.4unittest斷言斷言方法已經(jīng)在unittest.TestCase類中定義了,由于在自定義測(cè)試類時(shí)會(huì)繼承TestCase類,所以在測(cè)試方法中可以直接通過self調(diào)用這些斷言方法。如果在測(cè)試用例中調(diào)用斷言方法后,程序的執(zhí)行結(jié)果與預(yù)期結(jié)果一致,則測(cè)試用例執(zhí)行通過,否則測(cè)試用例執(zhí)行失敗。5.1.5生成HTML測(cè)試報(bào)告

先定一個(gè)小目標(biāo)!掌握HTMLTestRunner插件的使用方式,能夠生成HTML測(cè)試報(bào)告測(cè)試報(bào)告是測(cè)試程序執(zhí)行后輸出的一些信息,這些信息包括測(cè)試用例執(zhí)行的時(shí)間、測(cè)試用例通過或失敗的個(gè)數(shù)、測(cè)試結(jié)果等。當(dāng)使用unittest編寫測(cè)試用例時(shí),執(zhí)行完測(cè)試用例后,生成的測(cè)試報(bào)告會(huì)以文本的形式輸出到控制臺(tái),這種形式的測(cè)試報(bào)告可讀性較差,也不夠美觀,所以通常會(huì)使用第三方插件HTMLTestRunner來(lái)顯示測(cè)試報(bào)告。5.1.5生成HTML測(cè)試報(bào)告5.1.5生成HTML測(cè)試報(bào)告HTMLTestRunner是unittest框架中TextTestRunner類衍生出來(lái)的一個(gè)擴(kuò)展插件,它可以將測(cè)試用例執(zhí)行后的結(jié)果以HTML頁(yè)面的形式展示,也就是生成HTML測(cè)試報(bào)告。5.1.5生成HTML測(cè)試報(bào)告首先根據(jù)HTMLTestRunner的官方下載地址,打開HTMLTestRunner的下載頁(yè)面,如下圖所示。1.HTMLTestRunner的下載5.1.5生成HTML測(cè)試報(bào)告使用HTMLTestRunner生成測(cè)試報(bào)告的具體步驟如下。2.

生成HTML測(cè)試報(bào)告(1)將HTMLTestRunner.py文件放入Chapter05程序中將HTMLTestRunner.py文件放入Chapter05程序中,此時(shí)在程序中就可以使用HTMLTestRunner插件,如下圖所示。5.1.5生成HTML測(cè)試報(bào)告由于HTMLTestRunner是基于Python2開發(fā)的插件,而當(dāng)前使用的是Python3,Python3的語(yǔ)法在要在Python2的基礎(chǔ)上發(fā)生了變更,如果想要讓HTMLTestRunner兼容Python3,就需要在HTMLTestRunner.py文件中做一些語(yǔ)法修訂,修訂的具體內(nèi)容如下表所示。代碼位置原內(nèi)容替換內(nèi)容第94行importStringIOimportio第539行self.outputBuffer=StringIO.StringIO()self.outputBuffer=io.StringIO()第631行print>>sys.stderr,'\nTimeElapsed:%s'%(self.stopTime-self.startTime)print(sys.stderr,'\nTimeElapsed:%s'%(self.stopTime-self.startTime))第642行ifnotrmap.has_key(cls):ifnotclsinrmap:第766行uo=o.decode('latin-1')uo=o第768行uo=ouo=o.decode('utf-8')第772行ue=es.decode('latin-1')ue=e第774行ue=eue=e.decode('utf-8')5.1.5生成HTML測(cè)試報(bào)告首先在testsuite.py文件中導(dǎo)入HTMLTestRunner類,具體代碼如下。fromHTMLTestRunnerimportHTMLTestRunner(2)使用HTMLTestRunner生成HTML測(cè)試報(bào)告5.1.5生成HTML測(cè)試報(bào)告然后實(shí)例化HTMLTestRunner類,并調(diào)用run()方法執(zhí)行測(cè)試套件,

testsuite.py中的具體代碼如下。importunittestfromHTMLTestRunnerimportHTMLTestRunnersuite=unittest.TestLoader().discover(".","my*.py")file=open("report.html","wb")runner=HTMLTestRunner(stream=file,title="我的第一個(gè)HTML測(cè)試報(bào)告")runner.run(suite)file.close()pytest框架5.25.2.1pytest框架簡(jiǎn)介

先定一個(gè)小目標(biāo)!了解pytest框架的簡(jiǎn)介,能夠說出pytest框架的特點(diǎn)5.2.1pytest框架簡(jiǎn)介pytest是一個(gè)非常成熟且功能全面的Python單元測(cè)試框架,該框架與unittest框架類似,也用于管理Web自動(dòng)化測(cè)試程序中的測(cè)試用例,該框架提供了豐富的斷言表達(dá)式,便于判斷每條測(cè)試用例的執(zhí)行結(jié)果是否成功,而且也可以生成測(cè)試報(bào)告。除此之外,pytest框架還能夠與主流的自動(dòng)化測(cè)試工具Selenium、Appium和requests等結(jié)合使用,實(shí)現(xiàn)Web、App和接口自動(dòng)化測(cè)試。5.2.1pytest框架簡(jiǎn)介

入門簡(jiǎn)單、文檔豐富;

支持簡(jiǎn)單的單元測(cè)試和復(fù)雜的功能測(cè)試;

支持參數(shù)化;

執(zhí)行測(cè)試過程中可以將某些測(cè)試跳過,或者標(biāo)記某些預(yù)期失敗的測(cè)試用例;

支持重復(fù)執(zhí)行失敗的測(cè)試用例;

支持運(yùn)行由unittest編寫的測(cè)試用例;

支持較多的第三方插件,例如使用pytest-html插件生成HTML格式的測(cè)試報(bào)告、使用pytest-rerunfailures插件重新運(yùn)行失敗的測(cè)試用例等;

支持持續(xù)集成工具集成。pytest框架有以下幾個(gè)特點(diǎn):5.2.2pytest框架的安裝方式

先定一個(gè)小目標(biāo)!掌握pytest框架的安裝方式,能夠通過PyCharm工具或cmd命令安裝pytest框架5.2.2pytest框架的安裝方式由于pytest框架不是Python3.0以上版本中的默認(rèn)單元測(cè)試框架,所以在使用pytest框架之前需要先安裝。安裝pytest框架有兩種方式,一種是通過PyCharm工具安裝,另一種是通過cmd命令安裝。接下來(lái)針對(duì)這兩種安裝方式進(jìn)行介紹。5.2.2安裝pytest框架(1)通過PyCharm工具安裝pytest框架在PyCharm工具中安裝pytest框架的具體過程如下圖所示。5.2.2安裝pytest框架打開cmd命令窗口,在該窗口中輸入安裝pytest框架的命令,具體命令如下。pipinstallpytest(2)通過cmd命令安裝pytest框架5.2.2安裝pytest框架輸入“pipinstallpytest”命令后,按下“Enter”鍵,cmd命令窗口中會(huì)輸出安裝pytest框架的信息,如下圖所示。5.2.2安裝pytest框架為了驗(yàn)證pytest框架是否安裝成功,可以在cmd命令窗口中輸入查看pytest框架版本的命令,具體命令如下。pytest--version輸出了pytest框架的版本號(hào)信息,則說明pytest框架安裝成功。5.2.3pytest示例

先定一個(gè)小目標(biāo)!掌握pytest框架的使用方式,能夠編寫pytest示例5.2.3pytest示例當(dāng)使用pytest框架編寫測(cè)試用例時(shí),測(cè)試類名稱必須以Test開頭,測(cè)試方法或函數(shù)的名稱要以test開頭。接下來(lái)使用pytest框架編寫一個(gè)簡(jiǎn)單的測(cè)試用例,該測(cè)試用例用于檢測(cè)定義的函數(shù)是否為求和函數(shù),具體代碼如下。defadd(a,b):returna+bclassTestAdd:deftest_add(self):result=add(4,5)print(result)多學(xué)一招運(yùn)行pytest測(cè)試用例的常用方式運(yùn)行pytest測(cè)試用例的常用方式有兩種,具體介紹如下。(1)在PyCharm開發(fā)工具中運(yùn)行測(cè)試用例在PyCharm開發(fā)工具中將鼠標(biāo)放在測(cè)試類名或方法名或空行(最后一行代碼下方添加的空行)的位置,鼠標(biāo)右鍵單擊選擇“Run'Pythontestsfor測(cè)試類名或方法名'”選項(xiàng)即可執(zhí)行測(cè)試類或測(cè)試方法。多學(xué)一招運(yùn)行pytest測(cè)試用例的常用方式由于在Python中默認(rèn)使用的單元測(cè)試框架是unittest,所以鼠標(biāo)右鍵單擊后可能沒有出現(xiàn)選項(xiàng)“Run'Pythontestsfor測(cè)試類名或方法名'”,此時(shí)需要設(shè)置PyCharm工具中的單元測(cè)試框架為pytest,具體操作過程如下。多學(xué)一招運(yùn)行pytest測(cè)試用例的常用方式使用pytest命令運(yùn)行測(cè)試文件,常用命令的語(yǔ)法格式如下。pytest-s-v測(cè)試文件名稱上述語(yǔ)法格式中,-s用于輸出測(cè)試用例執(zhí)行的結(jié)果信息;-v用于輸出執(zhí)行的測(cè)試類名與測(cè)試方法名。(2)使用pytest命令的方式運(yùn)行測(cè)試用例多學(xué)一招運(yùn)行pytest測(cè)試用例的常用方式如果想通過pytest命令文件5-5中的運(yùn)行測(cè)試用例,則首先需要單擊PyCharm工具底部的“Terminal”選項(xiàng)卡,然后在命令終端“Terminal”窗口中輸入運(yùn)行測(cè)試用例的命令,并按下“Enter”鍵即可運(yùn)行文件5-5中的測(cè)試用例,如下圖所示。5.2.4pytest斷言

先定一個(gè)小目標(biāo)!掌握pytest中常用的斷言表達(dá)式,能夠判斷測(cè)試用例是否通過5.2.4pytest斷言pytest框架中沒有提供斷言方法,而是直接使用Python中的assert關(guān)鍵字與表達(dá)式結(jié)合進(jìn)行斷言,斷言的語(yǔ)法格式如下。assert表達(dá)式上述語(yǔ)法格式中,如果表達(dá)式的返回值為True,則斷言成功;否則,斷言失敗,程序拋出異常。5.2.4pytest斷言斷言表達(dá)式說明assertainb判斷b是否包含aassertanotinb判斷b是否不包含aasserta>b判斷a是否大于basserta<b判斷a是否小于basserta==b判斷a是否等于basserta!=b判斷a是否不等于basserta>=b判斷a是否大于等于basserta<=b判斷a是否小于等于basserta判斷a是否為真assertnota判斷a是否為假unittest中常用的8個(gè)斷言方法在pytest中可以用assert關(guān)鍵字與表達(dá)式結(jié)合來(lái)實(shí)現(xiàn),pytest中常用的斷言表達(dá)式如下表所示。5.2.4pytest斷言下面演示如何使用pytest中的斷言表達(dá)式,具體代碼如下。defadd(a,b):returna+bclassTestAdd:deftest_add(self):result=add(4,5)assertresult==9如果斷言add()函數(shù)的返回值不為9,則程序的運(yùn)行結(jié)果會(huì)輸出

“test_add.py::TestAdd::test_addFAILED”與“test_add.py:6:AssertionError”,5.2.5Fixture

先定一個(gè)小目標(biāo)!掌握Fixture的使用方式,能夠靈活使用Fixture中4個(gè)級(jí)別對(duì)應(yīng)的方法5.2.5Fixturepytest框架中的Fixture與unittest框架中的Fixture比較類似,都表示測(cè)試固件,用于對(duì)測(cè)試環(huán)境的初始化和銷毀。與unittest框架中的Fixture相比,pytest框架中的Fixture功能更加靈活易用、簡(jiǎn)單便捷,并且支持參數(shù)設(shè)置,有利于運(yùn)行多條測(cè)試用例。在pytest框架中使用Fixture管理測(cè)試用例有2種方式。第1種是以模塊或函數(shù)的模式管理測(cè)試用例,第2種是以類或方法的模式管理測(cè)試用例,這2種模式可以獨(dú)立運(yùn)行,也可以進(jìn)行交互。5.2.5FixtureFixture的模塊級(jí)別是指在模塊中定義setup_module()方法和teardown_module()方法,這2個(gè)方法分別在模塊運(yùn)行前和運(yùn)行后被調(diào)用,在整個(gè)模塊運(yùn)行中只執(zhí)行一次,作用于模塊中的測(cè)試用例。(1)模塊級(jí)別(2)函數(shù)級(jí)別Fixture的函數(shù)級(jí)別是指在模塊中定義setup_function()方法和teardown_function()方法,這2個(gè)方法分別在函數(shù)運(yùn)行前和運(yùn)行后被調(diào)用,作用于測(cè)試函數(shù)(定義于類外面的測(cè)試用例)。模塊中有幾個(gè)測(cè)試函數(shù)就執(zhí)行幾次函數(shù)級(jí)別的方法。Fixture基于測(cè)試用例運(yùn)行層的固件部分可以分為4個(gè)級(jí)別,具體介紹如下。5.2.5FixtureFixture的類級(jí)別是指在模塊或類中定義setup_class()方法和teardown_class()方法,并為這2個(gè)方法添加裝飾器@classmethod。setup_class()方法和teardown_class()方法分別在類運(yùn)行前和運(yùn)行后被調(diào)用,在類運(yùn)行的過程中只執(zhí)行一次,作用于類中的測(cè)試用例。(3)類級(jí)別(4)方法級(jí)別Fixture的方法級(jí)別是指在類中定義setup_method()方法或setup()方法、teardown_method()方法或teardown()方法,這2個(gè)方法分別在測(cè)試方法運(yùn)行前和運(yùn)行后被調(diào)用,在每個(gè)測(cè)試方法運(yùn)行的過程中只執(zhí)行一次,作用于類中的所有測(cè)試方法。5.2.5Fixture接下來(lái)通過一個(gè)案例演示如何使用Fixture中4個(gè)級(jí)別對(duì)應(yīng)的方法,具體代碼如下。[單擊查看源碼]5.2.6pytest配置文件

先定一個(gè)小目標(biāo)!掌握pytest中配置文件的使用方式,能夠設(shè)置配置文件中的常用配置項(xiàng)5.2.6pytest配置文件前面運(yùn)行測(cè)試用例時(shí)用到兩種方式,一種是在PyCharm開發(fā)工具中運(yùn)行測(cè)試用例,另一種是使用pytest命令運(yùn)行測(cè)試用例。除了這些方式可以運(yùn)行測(cè)試用例外,還可以通過pytest配置文件找到要運(yùn)行的測(cè)試用例來(lái)運(yùn)行。pytest配置文件是測(cè)試程序中的一個(gè)固定文件,該文件可以為測(cè)試程序配置指定的參數(shù),程序讀取該文件中的配置信息后,會(huì)按照配置的指定方式運(yùn)行測(cè)試用例。測(cè)試程序使用pytest配置文件后,可以快速找到需要運(yùn)行的測(cè)試用例。5.2.6pytest配置文件pytest配置文件在程序中默認(rèn)是不存在的,需要手動(dòng)創(chuàng)建,它被創(chuàng)建后通常放在程序的根目錄下。pytest配置文件有3個(gè)固定的名稱,分別是pytest.ini、tox.ini、setup.cfg,經(jīng)常使用的名稱為pytest.ini。如果想要設(shè)置pytest.ini文件中的配置項(xiàng)信息,則首先需要在cmd命令窗口中通過命令“pytest--help”來(lái)查看需要配置的配置項(xiàng)信息。5.2.6pytest配置文件在cmd命令窗口中輸入“pytest--help”命令并按“Enter”鍵,會(huì)輸出pytest.ini文件的配置項(xiàng)信息,如下圖所示。5.2.6pytest配置文件以pytest.ini配置文件為例,介紹幾個(gè)常用的配置項(xiàng),具體配置信息如下。[pytest]addopts=-vtestpaths=./scriptspython_files=test_*.pypython_classes=Test*python_functions=test_*5.2.6pytest配置文件關(guān)于pytest.ini配置文件中的配置項(xiàng)信息的相關(guān)說明如下。[pytest]:標(biāo)識(shí)當(dāng)前的配置文件是pytest配置文件。addopts:設(shè)置命令行參數(shù),多個(gè)參數(shù)之間用空格分隔。例如,配置addopts=-s-v,運(yùn)行測(cè)試用例后控制臺(tái)會(huì)輸出程序執(zhí)行的測(cè)試類名、測(cè)試方法名與測(cè)試結(jié)果信息。testpaths:設(shè)置要運(yùn)行的測(cè)試用例所在的目錄。pytest默認(rèn)情況搜索的是程序根目錄下的所有測(cè)試用例,如果配置testpaths=./scripts,程序?qū)⑺阉鱯cripts目錄下的所有測(cè)試用例。python_files:用于匹配要測(cè)試的文件,例如,python_files=test_*.py表示程序會(huì)匹配以“test_”開頭的所有.py文件中的測(cè)試用例。python_classes:用于匹配測(cè)試類,例如python_classes=Test*表示程序會(huì)匹配以“Test”開頭的所有測(cè)試類。python_functions:用于匹配測(cè)試方法,例如python_functions=test_*表示程序會(huì)匹配以“test_”開頭的所有測(cè)試方法。多學(xué)一招調(diào)用pytest的main()函數(shù)運(yùn)行測(cè)試用例如果測(cè)試程序中沒有添加pytest配置文件,可以調(diào)用pytest的main()函數(shù)來(lái)配置要運(yùn)行的測(cè)試用例。通常可以在測(cè)試程序中新建一個(gè)PythonFile文件來(lái)封裝main()函數(shù),該函數(shù)可以運(yùn)行指定的測(cè)試用例,也可以添加-s、-v等參數(shù)輸出詳細(xì)的測(cè)試結(jié)果信息、測(cè)試類名稱和測(cè)試方法名稱。多學(xué)一招調(diào)用pytest的main()函數(shù)運(yùn)行測(cè)試用例if__name__=='__main__':

#第1種寫法 pytest.main()#第2種寫法#pytest.main([./])(1)不帶任何參數(shù)當(dāng)main()函數(shù)中不帶任何參數(shù)時(shí),程序會(huì)默認(rèn)運(yùn)行根目錄及子目錄下所有以test開頭或以test結(jié)尾的文件(test_*.py或*_test.py),示例代碼如下。假設(shè)在測(cè)試程序中新建一個(gè)名為main_test.py的文件,在該文件中調(diào)用main()函數(shù)運(yùn)行指定測(cè)試用例的幾種常見寫法如下。多學(xué)一招調(diào)用pytest的main()函數(shù)運(yùn)行測(cè)試用例if__name__=='__main__': pytest.main(['./first_path'])(2)指定測(cè)試程序中的測(cè)試目錄假設(shè)需要調(diào)用main()函數(shù)運(yùn)行first_path目錄下的所有測(cè)試用例,示例代碼如下。(3)指定目錄中的測(cè)試文件假設(shè)需要調(diào)用main()函數(shù)運(yùn)行first_path目錄下的測(cè)試文件test_module.py,示例代碼如下。if__name__=='__main__': pytest.main(['./first_path/test_module.py'])多學(xué)一招調(diào)用pytest的main()函數(shù)運(yùn)行測(cè)試用例if__name__=='__main__': pytest.main(['./first_path/test_module.py'])(4)指定測(cè)試文件中的測(cè)試函數(shù)假設(shè)需要調(diào)用main()函數(shù)運(yùn)行測(cè)試文件test_module.py中的測(cè)試函數(shù)test_func(),test_module.py文件存在于first_path目錄下,示例代碼如下。if__name__=='__main__': pytest.main(['./first_path/test_module.py::TestClass::test_method'])(5)指定測(cè)試文件、測(cè)試類和測(cè)試方法假設(shè)需要調(diào)用main()函數(shù)運(yùn)行測(cè)試類TestClass中的測(cè)試方法test_method(),測(cè)試類TestClass存在于first_path目錄下的test_module.py文件中,示例代碼如下。多學(xué)一招調(diào)用pytest的main()函數(shù)運(yùn)行測(cè)試用例if__name__=='__main__': pytest.main(['D:/test/pytest'])(6)指定本地磁盤中的測(cè)試目錄假設(shè)需要調(diào)用main()函數(shù)運(yùn)行本地磁盤目錄D:/test/pytest中的測(cè)試用例,示例代碼如下。if__name__=='__main__':

pytest.main(['-s','-v','./first_path/test_module.py'])(7)添加-s、-v參數(shù)假設(shè)需要調(diào)用main()函數(shù)運(yùn)行first_path目錄中的測(cè)試文件test_module.py,并在main()函數(shù)中添加-s和-v參數(shù)輸出測(cè)試結(jié)果信息、測(cè)試類名和測(cè)試方法名,示例代碼如下。5.2.7測(cè)試用例的執(zhí)行順序

先定一個(gè)小目標(biāo)!掌握pytest-ordering插件的使用方式,能夠控制測(cè)試用例的執(zhí)行順序5.2.7測(cè)試用例的執(zhí)行順序在pytest框架中,測(cè)試用例是按照其在文件中的位置從上到下執(zhí)行的。如果想要在程序中改變測(cè)試用例的執(zhí)行順序,則需要安裝pytest-ordering插件。安裝pytest-ordering插件的cmd命令為“pipinstallpytest-ordering”。5.2.7測(cè)試用例的執(zhí)行順序當(dāng)使用pytest-ordering插件控制測(cè)試用例的執(zhí)行順序時(shí),需要在測(cè)試用例(測(cè)試方法)上方添加一個(gè)裝飾器,具體如下所示。@pytest.mark.run(order=None)上述裝飾器中,order的值用于決定測(cè)試用例的執(zhí)行順序,當(dāng)order的值為正數(shù)或負(fù)數(shù)時(shí),值越小,測(cè)試用例的優(yōu)先級(jí)越高,優(yōu)先級(jí)高的測(cè)試用例先執(zhí)行。當(dāng)order的值為負(fù)數(shù)和正數(shù)時(shí),正數(shù)的優(yōu)先級(jí)高,order值為0時(shí)的優(yōu)先級(jí)最高。沒有添加order值的測(cè)試用例優(yōu)先級(jí)比order值為負(fù)數(shù)的測(cè)試用例優(yōu)先級(jí)高,比order值為正數(shù)的測(cè)試用例優(yōu)先級(jí)低。5.2.7測(cè)試用例的執(zhí)行順序接下來(lái)通過一個(gè)案例來(lái)演示如何使用pytest-ordering插件控制測(cè)試用例的運(yùn)行順序,具體代碼如下。[單擊查看源碼]5.2.8跳過測(cè)試用例

先定一個(gè)小目標(biāo)!掌握跳過測(cè)試用例的方式,能夠在測(cè)試程序中跳過指定的測(cè)試用例5.2.8跳過測(cè)試用例當(dāng)測(cè)試一款A(yù)ndroid系統(tǒng)的App時(shí),如果新版本和舊版本的Android設(shè)備都安裝了該App,舊版本的Android設(shè)備不支持App中的某一項(xiàng)功能,此時(shí)測(cè)試舊版本中的App時(shí),沒有必要去測(cè)試設(shè)備不支持的功能,所以測(cè)試代碼在運(yùn)行時(shí)需要跳過設(shè)備不支持的功能對(duì)應(yīng)的測(cè)試用例,從而提高測(cè)試效率。在pytest框架中,跳過測(cè)試用例的方式有2種,第1種是在測(cè)試用例上方添加裝飾器,第2種是在測(cè)試用例中調(diào)用skip()方法。5.2.8跳過測(cè)試用例1.在測(cè)試用例上方添加裝飾器如果想要在測(cè)試程序運(yùn)行時(shí),跳過某個(gè)測(cè)試用例,可以在該測(cè)試用例上方添加裝飾器@pytest.mark.skipif()或@pytest.mark.skip(),裝飾器@pytest.mark.skipif()的語(yǔ)法格式如下。@pytest.mark.skipif(condition,reason=None)condition:該參數(shù)是一個(gè)表達(dá)式,表示跳過測(cè)試用例的條件,該參數(shù)值的數(shù)據(jù)類型為boolean,如果該參數(shù)的值為True,則程序跳過測(cè)試用例;如果該參數(shù)的值為False,則程序不跳過測(cè)試用例。reason:表示跳過測(cè)試用例的原因,默認(rèn)值為None。5.2.8跳過測(cè)試用例裝飾器@pytest.mark.skip()的語(yǔ)法格式如下。@pytest.mark.skip(reason=None))reason表示跳過測(cè)試用例的原因,默認(rèn)值為None。5.2.8跳過測(cè)試用例2.在測(cè)試用例中調(diào)用skip()方法在測(cè)試用例中調(diào)用skip()方法可以跳過該測(cè)試用例,skip()方法的語(yǔ)法格式如下。skip(msg)skip()方法中的參數(shù)msg表示跳過測(cè)試用例的原因。5.2.8跳過測(cè)試用例接下來(lái)通過一個(gè)案例來(lái)演示如何使用添加裝飾器和調(diào)用skip()方法實(shí)現(xiàn)跳過測(cè)試用例的功能,具體代碼如下。[單擊查看源碼]多學(xué)一招跳過測(cè)試類和測(cè)試模塊在自動(dòng)化測(cè)試程序的運(yùn)行中,除了可以跳過測(cè)試用例外,還可以跳過測(cè)試類和測(cè)試模塊。實(shí)現(xiàn)跳過測(cè)試類的方式與通過添加裝飾器跳過測(cè)試用例的方式類似,在需要跳過的測(cè)試類上方添加裝飾器@pytest.mark.skip()或@pytest.mark.skipif()即可。多學(xué)一招跳過測(cè)試類和測(cè)試模塊實(shí)現(xiàn)跳過測(cè)試模塊的方式有兩種,具體介紹如下。pytestmark=pytest.mark.skip(reason="")第二種方式是在測(cè)試模塊中調(diào)用pytest.mark.skip()方法,具體示例代碼如下。pytest.skip("",allow_module_level=True)上述示例代碼中的參數(shù)reason的值可以是跳過測(cè)試用例的原因。第一種方式是在測(cè)試模塊中調(diào)用pytest.mark.skip()方法,具體示例代碼如下。上述示例代碼中的第1個(gè)參數(shù)的值可以是跳過測(cè)試用例的原因。5.2.9失敗重試

先定一個(gè)小目標(biāo)!掌握pytest-rerunfailures插件的使用方式,能夠?qū)y(cè)試用例進(jìn)行失敗重試5.2.9失敗重試自動(dòng)化測(cè)試過程中,有時(shí)會(huì)因?yàn)榫W(wǎng)速慢而導(dǎo)致測(cè)試用例運(yùn)行不通過。針對(duì)這種由網(wǎng)速慢而不是測(cè)試腳本有問題導(dǎo)致的測(cè)試失敗的情況,在執(zhí)行測(cè)試用例失敗后,可以重新執(zhí)行一次測(cè)試用例。一般情況下,因?yàn)榫W(wǎng)絡(luò)原因測(cè)試用例執(zhí)行失敗重試后是能通過的,如果重試后測(cè)試用例仍沒有通過,則需要對(duì)腳本代碼進(jìn)行排查。5.2.9失敗重試在pytest框架中可以使用插件pytest-rerunfailures讓執(zhí)行失敗的測(cè)試用例重新運(yùn)行,該插件的安裝方式與安裝pytest框架的方式一樣,可以在PyCharm工具中安裝,也可以使用cmd命令安裝。安裝pytest-rerunfailures插件的cmd命令為“pipinstallpytest-rerunfailures”。5.2.9失敗重試需要注意的是,安裝pytest-rerunfailures插件時(shí),需要滿足兩個(gè)條件,第一個(gè)條件是安裝Python3.5及以上的版本,第二個(gè)條件是安裝Pytest5.0及以上的版本。注意5.2.9失敗重試在當(dāng)使用pytest-rerunfailures插件時(shí),需要在配置文件pytest.ini的配置項(xiàng)addopts中添加--rerunsn,例如,addopts=--reruns3,表示如果測(cè)試用例運(yùn)行失敗,則重新嘗試運(yùn)行3次測(cè)試用例。5.2.9失敗重試接下來(lái)通過一個(gè)案例來(lái)演示如何使用pytest-rerunfailures插件進(jìn)行測(cè)試用例的失敗重試,具體代碼如下。classTestClass:deftest_case(self):print("第一個(gè)測(cè)試用例:計(jì)算3+3的和")sum=3+3assert9==sum5.2.9失敗重試pytest.ini的配置文件中的具體配置項(xiàng)如下。[pytest]addopts=--reruns3testpaths=./python_files=test_*.pypython_classes=Test*python_functions=test_*5.2.10參數(shù)化

先定一個(gè)小目標(biāo)!掌握pytest參數(shù)化的使用方式,能夠減少測(cè)試程序中的冗余代碼5.2.10參數(shù)化當(dāng)測(cè)試百度頁(yè)面中的搜索功能時(shí),需要輸入不同的搜索內(nèi)容,此時(shí)在測(cè)試程序中會(huì)創(chuàng)建不同的測(cè)試方法向百度頁(yè)面中的搜索框中輸入不同的搜索內(nèi)容,這些測(cè)試方法中除了搜索內(nèi)容不同之外,其余的代碼都是相同的。為了減少測(cè)試程序中的冗余代碼與測(cè)試人員的工作量,可以使用pytest框架中自帶的參數(shù)化功能。5.2.10參數(shù)化參數(shù)化就是把一組測(cè)試用例中的固定測(cè)試數(shù)據(jù)提取出來(lái),然后存放在一個(gè)集合中,程序執(zhí)行時(shí)會(huì)自動(dòng)從該集合中獲取測(cè)試數(shù)據(jù),直到集合中的數(shù)據(jù)被獲取完便結(jié)束。在pytest中,可以通過裝飾器@pytest.mark.parametrzie()實(shí)現(xiàn)參數(shù)化。5.2.10參數(shù)化裝飾器@pytest.mark.parametrzie()的語(yǔ)法格式如下。@pytest.mark.parametrzie(argnames,argvalues,indirect=False,ids=None,scope=None)參數(shù)argnames和argvalue為必傳參數(shù),其余3個(gè)參數(shù)通常不用傳遞。argnames:必傳參數(shù),表示參數(shù)名稱,多個(gè)參數(shù)名稱之間用逗號(hào)隔開,例如,“username,password”。argvalues:必傳參數(shù),表示參數(shù)值,多個(gè)參數(shù)值之間用逗號(hào)隔開,該值可以是列表類型、元組類型或字典類型的數(shù)據(jù)。例如,列表類型的數(shù)據(jù)['123','456'],元組類型的數(shù)據(jù)[(1,2,3),(4,5,6)]。argvalues中有幾組數(shù)據(jù),測(cè)試方法就會(huì)運(yùn)行幾次。5.2.10參數(shù)化需要注意的是,argvalues中每組測(cè)試數(shù)據(jù)的參數(shù)值個(gè)數(shù)要與argnames中的參數(shù)名稱個(gè)數(shù)相同,否則程序會(huì)報(bào)錯(cuò)。注意5.2.10參數(shù)化接下來(lái)演示如何使用pytest中的參數(shù)化,具體代碼如下。importpytestdefproduct(a,b):returna*bclassTestProduct:@pytest.mark.parametrize("a,b,expect",[(2,2,4,),(2,3,6)])deftest_product(self,a,b,expect):result=product(a,b)assertexpect==result5.2.11生成測(cè)試報(bào)告

先定一個(gè)小目標(biāo)!掌握pytest-html插件與allure-pytest插件的使用方式,能夠生成測(cè)試報(bào)告5.2.11生成測(cè)試報(bào)告pytest框架可以支持多種形式的測(cè)試報(bào)告,該測(cè)試報(bào)告能夠記錄報(bào)告生成的日期和時(shí)間、測(cè)試用例執(zhí)行結(jié)果、測(cè)試步驟、測(cè)試環(huán)境等信息,比unittest框架中生成的HTML測(cè)試報(bào)告信息更詳細(xì)與美觀。通常,會(huì)使用pytest框架與pytest-html插件或allure-pytest插件結(jié)合生成的測(cè)試報(bào)告。5.2.11生成測(cè)試報(bào)告1.使用pytest-html插件生成測(cè)試報(bào)告使用pytest-html插件生成測(cè)試報(bào)告的具體步驟如下。(1)安裝pytest-html插件安裝pytest-html插件時(shí),可以在PyCharm工具中安裝,也可以通過cmd命令來(lái)安裝,安裝pytest-html插件的命令是“pipinstallpytest-html”。5.2.11生成測(cè)試報(bào)告(2)設(shè)置配置項(xiàng)addopts當(dāng)使用pytest-html插件生成測(cè)試報(bào)告時(shí),需要在配置文件pytest.ini中設(shè)置配置項(xiàng)addopts,該配置項(xiàng)的信息設(shè)置為測(cè)試報(bào)告的存放路徑,具體設(shè)置代碼如下。addopts=--html=report/report.html上述配置項(xiàng)信息中,--html表示執(zhí)行測(cè)試用例后會(huì)生成一個(gè)HTML測(cè)試報(bào)告,report表示執(zhí)行測(cè)試用例后測(cè)試報(bào)告文件會(huì)存放在程序根目錄下的report文件夾中,report.html是測(cè)試報(bào)告文件的名稱。5.2.11生成測(cè)試報(bào)告在PyCharm工具中的“Terminal”窗口中輸入“pytest”命令運(yùn)行程序中的測(cè)試用例,運(yùn)行完成后,在程序根目錄下的report文件夾中會(huì)生成測(cè)試報(bào)告文件report.html。(3)生成測(cè)試報(bào)告5.2.11生成測(cè)試報(bào)告接下來(lái)以TPshop開源商城項(xiàng)目中的登錄功能為例,演示如何使用pytest-html插件自動(dòng)生成登錄功能的測(cè)試報(bào)告,具體代碼如下。[單擊查看源碼]5.2.11生成測(cè)試報(bào)告[pytest]addopts=-s--html=report/report.htmltestpaths=./python_files=test_*.pypython_classes=Test*python_functions=test_*編寫完測(cè)試登錄功能的代碼之后,還需要?jiǎng)?chuàng)建一個(gè)配置文件pytest.ini,在該文件中添加配置項(xiàng)信息,具體代碼如下。5.2.11生成測(cè)試報(bào)告使用allure-pytest插件生成測(cè)試報(bào)告的具體步驟如下。安裝allure-pytest插件時(shí),可以在PyCharm工具中安裝,也可以通過cmd命令來(lái)安裝,安裝al

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論