python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解
python中unittest模塊是用來做單元測試的。
unittest是一個python版本的junit,junit是java中的單元測試框架,對java的單元測試,有一句話很貼切:Keep thebar green,相信使用eclipse寫過java單元測試的都心領神會。unittest實現了很多junit中的概念,比如我們非常熟悉的test case, test suite等,總之,原理都是相通的,只是用不同的語言表達出來。
unittest作為單元測試框架以一個標準模塊放入python的開發包中,測試框架可以提供用例的組織與執行,提供豐富的驗證比較方法和豐富的日志,能夠幫助我們更好的組織自動化測試用例。
一、unitest中幾個重要的概念
1、Test Case
一個Test Case的實例就是一個測試用例,一個測試用例就是一個完整的測試流程,它包括測試前準備 setUp() ,實現測試過程的代碼run(),以及測試完成之后的環境還原tearDown() ;測試單元unit test 就是一個完整的測試用例,通過這個單元測試可以對程序的某個功能進行驗證
2、Test Suite
一個功能點的驗證往往包含多個測試用例,多個測試用例集合到一起就組成一個測試集 TestSuite ,通過addTest()加載Test Case到 TestSuite中
3、Test Runner
測試用例的執行,我們可以執行單個測試用例也可以執行整個測試集,通過TextTestRunner類提供的run()方法來執行
4、Test Fixture
對一個測試用例從環境的前期搭建到銷毀就是一個fixture ,通過覆蓋test case 的setUp()和tearDown()方法來實現
二、unittest 編寫用例
1、我們先定義一個sumFunc.py文件,給出一個計算兩數之和的方法
2、 編寫一個unittest的用例test01.py文件:
我們的TestCount類繼承類unittest模塊中的TestCase類,使用asserEqual方法對sumNum()方法進行斷言,而省去類被注釋掉的代碼,常用的斷言方法有:asserEqual(a,b)、assertTrue(a)、assertIs(a,b)、assertIsNone(x)等等
3、組織單元測試用例
首先,我們在sumFunc.py文件中再增加一個subNum()方法用來計算兩個數的減法,然后在test01.py文件中新增這個方法的斷言驗證
然后,我們開始組織用例
上面的例子中創建了TestCount()和TestSub()兩個類,分別測試sumFunc.py文件中的sumNum()和subNum()兩個功能,通過TestSuite類的addTest()方法把不同的測試類中的測試方法組裝到測試集中,最后執行結果如下:
三、Testloader用例識別
從上面簡單的例子中可以看到我們的測試集需要添加所有的case去執行,實際項目中我們的case可以按照功能劃分有成百上千條用例,這時我們就可以用Testloader類提供discover()方法自動識別測試用例
discover(start_dir, pattern='test*.py', top_level_dir=None)
這樣,只要我們的測試case按照pattern給定的規則命名,就能自動的識別到測試用例去run()
四、用例類型
1、在實際應用中我們會需要根據特定的場景和條件選擇跳過不去執行某些用例,在unittest中提供了這樣的功能:
unitest.skip(reason) #跳過裝飾的測試,并給出原因
unitest.skipIf(condition,reason) #跳過裝飾的測試,當滿足條件時
unitest.skipUnless(condition,reason) #跳過裝飾的測試,除非滿足條件時
unitest.expectedFailure() #該裝飾的測試統一標記為失敗
2、上 面我們提到fixtures可以看作是setUp/tearDown和中間的測試用例,除此之外,unit test還有對測試類和測試模塊的fixtures
setUpModule/tearDownModule :在整個模塊的開始和結束時被執行
setUpClass/tearDownClass :在測試類的開始和結束時被執行
setUp/tearDown :在測試用例的開始和結束時被執行
五、測試報告
在測試執行完成之后我們需要將用例的結果寫入到log文件中,簡單的我們可以直接寫入文件
python runtest.py >> report/log.txt 2>&1
實際項目中我們一般要加入些report插件來更直觀美化的呈現測試報告,HTMLTestRunner是python標準庫unittest單元測試框架的一個擴展,它生成易于使用的HTML報告,下載地址:
http://tungwaiyip.info/software/HTMLTestRunner.html
將HTMLTestRunner.py(python 2和python 3有些方法不一致需要修改一點)文件加入到我們的python安裝目錄中,然后import?HTMLTestRunner
fp = open('./result.html', 'wb')
runner =?HTMLTestRunner(stream=fp,title='測試報告標題', description='測試報告描述')
runner.run(testunit)
fp.close
1、HTMLTestRunner可以讀取到doc string類的注釋(‘’‘ ’‘’),所以我們可以給每個測試用例通過添加注釋就能在報告中展示每條用例的名稱
2、我們可以使用用例執行時間來存儲每次報告的文件名稱
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = './' + now + 'result.html'
fp = open(filename,'wb')
3、發送測試報告郵件,python的smtplib模塊提供sendmail方法讓我們發送郵件
我們需要設置郵箱的服務器、發送郵箱、接受郵箱、郵件主題、郵件附件等等
關于Unittest單元測試框架今天就跟你們分享到這里了,如果對你有幫助的話,歡迎大家評論留言一起交流。最后別忘了點擊關注一鍵三連哦!
總結
以上是生活随笔為你收集整理的python测试框架untest怎么循环执行_Python自动化测试-Unittest单元测试框架详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: am4针脚定义_AMD Zen处理器/A
- 下一篇: catia 桥接曲面圆角_4.3.7.1