1、Unittest介紹
為什么要學(xué)習(xí)單元測(cè)試框架
測(cè)試用例的組織與運(yùn)行需要單元測(cè)試框架的參與,從而滿足不同測(cè)試場(chǎng)景的需要,單元測(cè)試框架提供了豐富的比較方法:實(shí)際結(jié)果與預(yù)期結(jié)果的對(duì)比==測(cè)試結(jié)果
單元測(cè)試框架提供了豐富的日志:給出測(cè)試用例失敗與通過(guò)的數(shù)目及執(zhí)行失敗的原因
常見(jiàn)的單元測(cè)試框架有哪些
Doctest、unittest、pytest、nose等等
Java--》junit(testng)、C++--》 googleTest、c#--》nunit
2、Unittest核心組件
3、Unittest工作原理
Testcase:一個(gè) testcase 就是一個(gè)測(cè)試用例。Setup(測(cè)試環(huán)境的準(zhǔn)備)、run(測(cè)試執(zhí)行)、teardown(測(cè)試環(huán)境的還原)。
Testsuite(集合或套件):多個(gè)測(cè)試用例的集合就是 suite,一個(gè)suite可以包含多個(gè)測(cè)試用例,也可以嵌套 suite。
TestLoader:用來(lái)加載 testcase到testsuite 中的。
TestTestRunner:用例執(zhí)行測(cè)試用例(run 方法),測(cè)試結(jié)果會(huì)保存在 TestTestresult 中。
fixture:一個(gè)測(cè)試用例環(huán)境的搭建和銷毀。
?
4、Unittest單元測(cè)試用例的組織
構(gòu)建單元測(cè)試用例
場(chǎng)景:以字符串替換舉例
?
?
5、構(gòu)建測(cè)試套件(優(yōu)化測(cè)試用例)
單元測(cè)試用例的增多,在各個(gè)測(cè)試代碼中會(huì)有很多相似的操作,考慮setUp(測(cè)試環(huán)境的準(zhǔn)備)、tearDown(測(cè)試環(huán)境的還原)
?
6、組織多個(gè)測(cè)試用例(深度優(yōu)化測(cè)試用例)
測(cè)試用例的繼續(xù)優(yōu)化:所有的測(cè)試用例不需要都用單獨(dú)的類進(jìn)行存放,該方式比較耗時(shí),通過(guò)test開(kāi)頭的函數(shù)來(lái)存放測(cè)試用例。
?
7、構(gòu)建測(cè)試套件
多個(gè)測(cè)試用例的集合就是suite,一個(gè)suite可以包含多個(gè)測(cè)試用例,也可以嵌套suite。
?
8、測(cè)試套件優(yōu)化
執(zhí)行部分測(cè)試用例
?
執(zhí)行某測(cè)試類下的全部測(cè)試用例,unittest模塊中提供一個(gè)makesuite
9、多個(gè)測(cè)試類的控制
?
10、執(zhí)行測(cè)試
首先將StringReplaceTestCase放在單獨(dú)的一個(gè)py文件中StringReplace.py
將注釋放在方法內(nèi),作為方法的說(shuō)明。
執(zhí)行部分測(cè)試用例,創(chuàng)建一個(gè)test_suite.py,用戶控制措施用例的執(zhí)行
運(yùn)行全部測(cè)試用例。
11、測(cè)試用例的跳過(guò)
修改StringReplace文件,理解skip、skipif、skipunless
12、Unittest框架總結(jié)
unittest.TestCase:TestCase類,所有測(cè)試用例類繼承的基本類。class Test(unittest.TestCase):
unittest.main():使用可以方便的將一個(gè)單元測(cè)試模塊變?yōu)榭芍苯舆\(yùn) 行的測(cè)試腳本
unittest.TestSuite():unittest框架的TestSuite()類是用來(lái)創(chuàng)建 測(cè)試套件的。
unittest.TextTestRunner():unittest框架的TextTestRunner()類, 通過(guò)該類下面的run()方法來(lái)運(yùn)行suite所組裝的測(cè)試用例,入?yún)?suite測(cè)試套件。
unittest.skip():裝飾器,當(dāng)運(yùn)行用例時(shí),有些用例可能不想執(zhí)行,可用裝飾器 暫時(shí)屏蔽該條測(cè)試用例。常見(jiàn)的用法如想調(diào)試某一測(cè)試用例,可先屏蔽其他用例
@unittest.skip(reason): skip(reason)裝飾器:無(wú)條件跳過(guò)裝飾的測(cè)試,并說(shuō) 明跳過(guò)測(cè)試的原因。?
@unittest.skipIf(reason): skipIf(condition,reason)裝飾器:條件為真時(shí), 跳過(guò)裝飾的測(cè)試,并說(shuō)明跳過(guò)測(cè)試的原因。
@unittest.skipUnless(reason): skipUnless(condition,reason)裝飾器:條件 為假時(shí),跳過(guò)裝飾的測(cè)試,并說(shuō)明跳過(guò)測(cè)試的原因
setUp()方法用于測(cè)試用例執(zhí)行前的初始化工作。如測(cè)試用 例中需要訪問(wèn)瀏覽器,可以在setUp中實(shí)例化瀏覽器驅(qū)動(dòng)。?
tearDown():tearDown()方法用于測(cè)試用例執(zhí)行之后的善后工作、關(guān) 閉瀏覽器。
斷言方法:在執(zhí)行測(cè)試用例的過(guò)程中,最終用例是否執(zhí)行通過(guò),是通 過(guò)判斷測(cè)試得到的實(shí)際結(jié)果和預(yù)期結(jié)果是否相等決定的。
assertEqual(a,b,[msg='測(cè)試失敗時(shí)打印的信息']):斷言a和b是否相等,相等則測(cè)試用例通 過(guò)。
assertNotEqual(a,b,[msg='測(cè)試失敗時(shí)打印的信息']):斷言a和b是否相等,不相等則測(cè)試 用例通過(guò)。
assertTrue(x,[msg='測(cè)試失敗時(shí)打印的信息']):斷言x是否True,是True則測(cè)試用例通過(guò)。
addTest(): 方法是將測(cè)試用例添加到測(cè)試套件中。
run(): 方法是運(yùn)行測(cè)試套件的測(cè)試用例,入?yún)閟uite測(cè)試套件
13、HTML報(bào)告介紹
HTMLTestRunner是Python的標(biāo)準(zhǔn)庫(kù)unittest單元測(cè)試框架的一個(gè)擴(kuò) 展,用于生成HTML測(cè)試報(bào)告
下載地址:?http://tungwaiyip.info/software/HTMLTestRunner.html
?
14、HTML測(cè)試結(jié)果
HTMLTestRunner.py下載地址http://tungwaiyip.info/software/HTMLTestRunner.html
HTMLTestRunner.py的存放路徑,是放在C:\Users\Administrator\AppData\Local\Programs\Python37\Lib
HTMLTestRunner.py是基于python2*開(kāi)發(fā)的,要想能夠在python3上使用,需要修改該文件。
修改匯總:?
第94行,將import StringIO修改成import io
第539行,將self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,將if not rmap.has_key(cls):修改成if not cls in rmap:
第766行,將uo = o.decode('latin-1')修改成uo = e
第772行,將ue = e.decode('latin-1')修改成ue = e
第631行,將print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
基于test_suite文件進(jìn)行HTML報(bào)告生成,存放到D盤名為result.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-765575.html
?現(xiàn)在我也找了很多測(cè)試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒(méi)人解答問(wèn)題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測(cè)試開(kāi)發(fā)等等方面有一定建樹(shù)的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開(kāi)源的?。。?qq群號(hào):485187702【暗號(hào):csdn11】
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-765575.html
到了這里,關(guān)于Selenium-Unittest單元測(cè)試框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!