python之unittest

unittest是單元測試的一個框架html

在說unittest以前,先說幾個概念:python

TestCase 也就是測試用例框架

TestSuite 多個測試用例集合在一塊兒,就是TestSuite單元測試

TestLoader是用來加載TestCase到TestSuite中的測試

TestRunner是來執行測試用例的,測試的結果會保存到TestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息ui

在寫代碼前,須要把兩個文件拷貝到libraries中:HTMLTestRunner.py 和BeautifulReport.zip解壓後的文件spa

接下來開始寫代碼code

 
 
import unittest class MyTest(unittest.TestCase):#繼承unittest.TestCase
    def tearDown(self): #每一個測試用例執行以後操做
        print("teardown1111") def setUp(self): #每一個測試用例執行以前操做
        print("setup2222") def test_run01(self): # 測試用例
        self.assertEqual(1,1) def test_run02(self): self.assertIn('a', 'mapeipei') if __name__=='__main__': unittest.main()#運行全部的用例
 
 

 

 

下面是一些經常使用的斷言xml

assertEqual(a, b)     a == b assertNotEqual(a, b) a != b assertTrue(x) bool(x) is True assertFalse(x) bool(x) is False assertIsNone(x) x is None assertIsNotNone(x) x is not None assertIn(a, b) a in b assertNotIn(a, b) a not in b

接下來咱們導入HTMLTestRunner(這個模塊須要本身安裝!)來生成測試報告:htm

import unittest import HTMLTestRunner class MyTest(unittest.TestCase):#繼承unittest.TestCase
    def tearDown(self): #每一個測試用例執行以後操做
        print("teardown1111") def setUp(self): #每一個測試用例執行以前操做
        print("setup2222") def test_run01(self): # 測試用例
        self.assertEqual(1,1) def test_run02(self): self.assertIn('a', 'mapeipei') def test_run03(self): self.assertEqual(2,2) if __name__=='__main__': testsuit = unittest.TestSuite()#建立一個測試集合
    # testsuit.addTest(MyTest('test_run01'))#往測試套件中單個添加測試用例
    testsuit.addTest(unittest.makeSuite(MyTest)) #添加MyTets類下的全部用例
    f = open('res.html','wb')#打開一個保存結果的html文件
    runner = HTMLTestRunner.HTMLTestRunner(stream=f,title='測試報告',description='測試狀況') #生成執行用例的對象
 runner.run(testsuit) #執行測試套件

假如咱們有不少測試用例的py文件,都放在某個目錄下,這時候須要把該目錄下的測試用例所有執行,可使用unittest.defaultTestLoader.discover

import unittest import HTMLTestRunner suite = unittest.TestSuite()#建立測試套件
all_case = unittest.defaultTestLoader.discover(u'E:\\testpy\\python-mpp\\練習\\0618練習\\case','test_*.py') #找到某個目錄下全部已test開始的py文件裏面的測試用例
for case in all_case: suite.addTests(case)#把全部的用例添加進來
fp = open('res02.html','wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='all_tests',description='全部測試狀況') runner.run(suite)

上述產生的測試報告是html格式的,jenkins沒法識別,顯示不出來,那我們就要產生一些Jenkins認識的測試報告,Jenkins認識xml格式的報告,那我們就產生xml格式的唄,就須要用一個新的模塊,xmlrunner,安裝直接 pip install xmlrunner便可,代碼以下:

if __name__=='__main__': testsuit = unittest.TestSuite()#建立一個測試集合
    # testsuit.addTest(MyTest('test_run01'))#往測試套件中單個添加測試用例
    testsuit.addTest(unittest.makeSuite(MyTest)) #添加MyTets類下的全部用例
    runner = xmlrunner.XMLTestRunner(output='report')#指定報告存放的目錄
 runner.run(testsuit) #執行測試套件
相關文章
相關標籤/搜索