Python中的Unittest框架

ckxllf發表於2019-08-21

  Unittest

  1.環境

  Unittest為Python內嵌的測試框架,不需要特殊配置,僅需要在File---settings---Tools----Python Intergrated Tools下配置框架為Unittest

  2.編寫規範

  需要匯入 import unittest

  測試類必須繼承unittest.TestCase

  測試方法以 test_開頭

  模組和類名沒有要求

  3.Unittest介紹

  import unittest

  def add(x, y):

  return x + y

  def sub(x,y):

  return x - y

  class UnittestDemo(unittest.TestCase):

  def setUp(self):

  print("I an setup")

  def test_add(self):

  print("my first unit test demo----add")

  self.assertEqual(add(10,1),11,"assert equal")

  def test_sub(self):

  print("my first unit test demo----sub")

  self.assertEqual(sub(10, 1), 9, "assert equal2")

  @unittest.skip("i don't want to run this case.")

  def test_sub1(self):

  print("my first unit test demo----sub1")

  self.assertEqual(sub(10, 1), 9, "assert equal3")

  def tearDown(self):

  print("I an tearDown")

  setUp及TearDown

  方法級別的,類裡面的每個方法呼叫一次

  def setUp(self):

  print("I an setup")

  setUpClass及tearDownClass

  類級別的,類裡面的所有方法僅執行一次

  @classmethod

  def setUpClass(cls):

  print("I an setUpClass")

  setUpModule,tearDownModule

  模組級別的,執行模組裡面類中的所有方法僅執行一次

  4.Unittest使用

  import unittest

  from unittest_task import UnittestDemo

  from HTMLTestRunner import HTMLTestRunner

  suite=unittest.TestSuite()#建立用例集合

  tests = [UnittestDemo("test_add"), UnittestDemo("test_sub"),UnittestDemo("test_sub1")]

  suite.addTests(tests)

  with open('HTMLReport.html', 'wb') as fi:

  runner = HTMLTestRunner(stream=fi,

  title = 'MathFunc Test Report',

  description='generated by HTMLTestRunner.',

  verbosity=2

  )

  runner.run(suite)

  TestCase

  多個測試用例集合在一起,就是TestSuite

  TestSuite 無錫看婦科的醫院

  多個測試用例集合在一起,就是TestSuite

  TestLoader

  用來載入TestCase到TestSuite中的

  TestRunner

  執行測試用例的,測試的結果會儲存到TestResult例項中,包括執行了多少測試用例,成功了多少,失敗了多少等資訊

  skip裝飾器

  跳過某個用例不執行

  @unittest.skip("i don't want to run this case.")

  無條件跳過

  unittest.skip(reason)

  當condition為True時跳過

  unittest.skipIf(condition, reason)

  當condition為False時跳過

  unittest.skipUnless(condition, reason)

  self.skipTest('do not run this.')

  5.Unittest生成報告

  5.1 Unittest生成txt格式報告

  if __name__ == '__main__':

  suite = unittest.TestSuite()

  tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]

  suite.addTests(tests)

  with open('UnittestTextReport.txt', 'a') as f:

  runner = unittest.TextTestRunner(stream=f, verbosity=2)

  runner.run(suite)

  執行該檔案,就會發現目錄下生成了’UnittestTextReport.txt,所有的執行報告均輸出到了此檔案中。

  verbosity引數可以控制執行結果的輸出,0 是簡單報告、1 是一般報告、2 是詳細報告

  5.2 Unittest生成html格式報告

  with open('HTMLReport.html', 'wb') as fi:

  runner = HTMLTestRunner(stream=fi,

  title = 'MathFunc Test Report',

  description='generated by HTMLTestRunner.',

  verbosity=2

  )

  runner.run(suite)

  輸出測試報告為HTML格式,unittest中htmltestrunner匯出測試報告,可以修改htmltestrunner中的測試程式碼


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2654412/,如需轉載,請註明出處,否則將追究法律責任。

相關文章