1. 程式人生 > 其它 >記錄:Windows10 安裝 Screenfetch(neofetch)

記錄:Windows10 安裝 Screenfetch(neofetch)

單元測試覆蓋型別:

語句覆蓋、條件覆蓋、判斷覆蓋、路徑覆蓋

unittest:

unittest 提供了 test cases、test suites、test fixtures、test runner相關的元件

編寫規範

  • 測試模組首先 import unittest
  • 測試類必須繼承 unittest.TestCase
  • 測試方法必須以test_開頭

import unittest

# 定義一個類,繼承unittest的TestCase
class TestStringMethods(unittest.TestCase):
# 基於測試方法級別的 setUp、tearDown:在每條測試用例前後分別呼叫
def setUp(self) -> None: #表示預設返回值為none
print("setup")

def tearDown(self) -> None:
print("teardown")

# 基於類級別的setUpClass、tearDownClass:執行這個類裡面的所有方法前後只執行一次
@classmethod # 類級別的裝飾器
def setUpClass(self) -> None: #表示預設返回值為none
print("setupclass")

@classmethod
def tearDownClass(self) -> None:
print("teardownclass")


# 方法以test_開頭
def test_upper(self):
self.assertEqual("foo".upper(),"FOO")

def test_isupper(self):
self.assertTrue("FOO".isupper())
self.assertFalse("Foo".isupper())

def test_split(self):
s="hello world"
self.assertEqual(s.split(),["hello","world"])
with self.assertRaises(TypeError):
s.split(2)

if __name__=="__main__":
# 方法一、 執行當前檔案所有的測試用例
# unittest.main()
# 方法二、新增到測試套件,批量執行指定的測試用例
suite = unittest.TestSuite()
suite.addTest(TestStringMethods("test_upper"))
suite.addTest(TestStringMethods("test_split"))
unittest.TextTestRunner().run(suite)
  # 方法三:將測試類新增到套件,批量執行測試類
  suite1 = unittest.TestLoader.loadTestsFromClass("TestStringMethods")
  suite=unittest.TestSuite([suite1])
  unittest.TextTestRunner(verbosity=2).run(suite)
測試報告:

測試框架結構

  • setUp用來為測試準備環境,tearDown 用來清理環境
  • 如果想要在所有case執行之前準備一次環境,並在所有case執行結束之後再清理環境,可以用setUpClass() 與 tearDownClass() 比如:資料庫連線與銷燬
  • 如果想有些方法不在本次執行使用 @unittest.skip
  • 各種執行:單一用例,類全部用例

斷言

  • assertEqual(arg1,arg2,msg=None)
  • assertNotEqual(arg1,arg2,msg=None)
  • assertTrue(expr,msg=None)
  • assertFalse(expr,msg=None)

unittest 執行測試用例:

  • 執行順序:測試用例執行順序依據ascill碼來執⾏的,也就是說根據ASCII碼的順序載入,數字與字 ⺟的順序為:0-9,A-Z,a-z。
  • 多個測試用例的集合就是測試套件,通過測試套件來管理多個測試用例
  • verbosity詳解,verbosity有3個引數,分別是 0(靜默模式)、1(預設模式)、2(詳細模式)
  • 執行方法一 :unittest.main()
  • 執行方法二:加入容器中執行,執行指定的測試用例(用pycharm ide不準確,需要用命令列執行:python 模組名)
    • suite=unittest.TestSuite()
    • suite.addTest(TestMethod("test_01))
    • suite.addTest(TestMethod("test_02))
    • unittest.TextTestRunner().run(suite)
  • 執行方法三:將測試類新增到套件,批量執行測試類
  suite1 = unittest.TestLoader.loadTestsFromClass("class_name")
  suite=unittest.TestSuite([suite1])
  unittest.TextTestRunner(verbosity=2).run(suite)