Python unittest 基本框架解析(2)


下面例子,是一般測試框架的基本結構

框架知識點包括:實例化被測試模塊類、裝載測試用例、測試套件打包、保存測試輸出結果、生成測試報告等

測試情況包括   :跳過某個case、執行成功、執行失敗

 

#待測試模塊 -> myclass.py

class myclass:
  def __init__(self):
    pass

  def sum(self, x, y):
    return x+y

  def sub(self, x, y):
    return x-y

  def cheng(self, x, y):
    return x*y

 

#單元測試模塊 -> mytest.py

import unittest     #導入測試模塊
import myclass    #導入待測試模塊

class mytest(unittest.TestCase):

  #初始化工作
  def setUp(self):
    self.tclass = myclass.myclass()    #實例化了被測試模塊中的類

  #退出清理工作
  def tearDown(self):
    pass

  #具體的測試用例
  def test_sum(self):
    self.assertEqual(self.tclass.sum(1,2) ,3)

  #跳過某個case
  @unittest.skip("I don't want to run this case.")
  def test_sub(self):
    self.assertEqual(self.tclass.sub(4,2) ,2)

  def test_cheng(self):
    self.assertEqual(self.tclass.cheng(2,3) ,5)

 

if __name__ == '__main__':

  #裝載測試用例(該句話等價於tests = [mytest("test_sum"),mytest("test_sub"),mytest("test_cheng")])
  tests = unittest.TestLoader().loadTestsFromTestCase(mytest)

  #使用測試套件並打包測試用例(addTests()等價於addTest())
  suite = unittest.TestSuite()
  suite.addTest(tests)

  #保存unittest的測試輸出日志
  log_name = "log.txt"
  with open(log_name, 'w+')as f:
    result = unittest.TextTestRunner(stream = f, verbosity = 2).run(suite)

  #若不保存測試輸出結果,執行如下命令
  #result = unittest.TextTestRunner(verbosity = 2).run(suite)

  #生成測試報告
  print("testsRun:%s" %result.testsRun)
  print("failures:%s" %len(result.failures))
  print("errors:%s" %len(result.errors))
  print("skipped:%s" %len(result.skipped))

#以上“if __name__ == '__main__':”下的內容,完全可以使用“unittest。main()”替代(前提是:所有的測試模塊均以test開頭)

 

交互界面執行結果:

 

測試輸出結果(log):

測試結果保存地址:C:\Users\xxx\Desktop

 


免責聲明!

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



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