python+unittest接口測試與報告生成


下面介紹內容為接口測試的基本簡單實現,其中包括了幾種不同的添加case和生成測試報告的方法,代碼已測試通過,並附上報告截圖
--------------------------分割線----------------------------------------------------------

import unittest
import xmlrunner
import HTMLTestRunner
import time


class Test(unittest.TestCase):

flag = 1
'''setUp() 在每個測試方法執行前執行一次,tearDown() 在每個測試方法執行后執行一次,
如本例子的test_Add1和test_Add2 ;
setUp用來為准備測試環境和數據,tearDown用來清理環境和數據,以備之后的測試'''
'''類方法 setUpClass() 在所有測試方法開始執行前執行一次,
tearDownClass() 在所有測試方法執行后執行一次'''

def setUp(self):
print("每個測試case開始執行前執行")

def tearDown(self):
print("每個測試case結束執行后執行")

@classmethod
def setUpClass(cls):
print("所有測試case開始執行前執行")

@classmethod
def tearDownClass(cls):
print("所有測試case結束執行后執行.")

def add(self,a,b):
return a+b

# 每個測試方法均以 test 開頭,否則是不被unittest識別的。
def test_Add1(self):
print('test_Add1')
self.assertEqual(3,self.add(1,2))

def test_Add2(self):
print('test_Add2')
self.assertEqual(3,self.add(1,4))

'''skip裝飾器一共有三個
unittest.skip(reason)

unittest.skipIf(condition, reason)

unittest.skipUnless(condition, reason)

skip無條件跳過,skipIf當condition為True時跳過,skipUnless當condition為False時跳過'''
@unittest.skip("跳過tes_Add3")
def test_Add3(self):
self.assertEqual(6,self.add(2,4))
print('test_Add3')

@unittest.skipIf(flag == 1, "當condition為True時跳過")
def test_Add4(self):
print('test_Add4')
self.assertEqual(6,self.add(2,4))

@unittest.skipUnless(flag == 1, "當condition為False時跳過")
def test_Add5(self):
print('test_Add5')
self.assertEqual(6, self.add(2, 4))


if __name__ == '__main__':

test_suite = unittest.TestSuite()
# 添加case方法一:執行case順序根據與添加的順序一致
'''test_cases = [Test("test_Add5"),Test("test_Add2"),Test("test_Add3"),Test("test_Add4"),Test("test_Add1")]
test_suite.addTests(test_cases)'''

# 添加case方法二:單獨一個一個添加
'''test_suite.addTest(Test("test_Add5"))
# test_suite.addTest(Test("test_Add4"))'''

# 添加case方法三:loadTestsFromTestCase(),傳入TestCase
# test_suite.addTests(unittest.TestLoader().loadTestsFromTestCase(Test))

# 添加case方法四
test_suite.addTest(unittest.makeSuite(Test))

# 生成Text格式測試報告
'''with open('TextTestRunnerReport.txt', 'a') as f:
runner = unittest.TextTestRunner(stream=f, verbosity=2)
runner.run(test_suite)'''

# 生成xml格式的測試報告
'''# test_suite.addTest(unittest.makeSuite(Test))
runner = xmlrunner.XMLTestRunner(output='report') # 指定報告放的目錄
runner.run(test_suite)'''

# 生成HTML格式的測試報告
now = time.strftime(u'%Y%m%d%H%M')
# test_suite.addTest(Test('test_Add1'))
# test_suite.addTests(unittest.TestLoader().loadTestsFromTestCase(Test))
report = ".\\report\\" + now + "HTMLreport.html"
with open(report,'wb') as f:
runner = HTMLTestRunner.HTMLTestRunner(f, verbosity=2, title='這是HTML格式測試報告', description='測試報告')
runner.run(test_suite)

# verbosity參數可以控制執行結果的輸出,0 是簡單報告、1 是一般報告、2 是詳細報告
# unittest.main(verbosity=2)

------------------
--------------------------------------------分割線-----------------------------------------------------------------
text報告格式截圖:

xml報告格式截圖:

html格式報告截圖:

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM