1. 程式人生 > 其它 >ssm裡面使用的註解

ssm裡面使用的註解

技術標籤:測試測試開發

單元測試

單元測試?
單元測試什麼測試?
單元測試誰負責?

常見的單元測試庫
Unittest
Python 內建標準庫
Pytest
豐富、靈活、語法簡單。可以結合allure生成一個炫酷的報告。現在比較流行。
Nose
Nose是對Unittest的擴充套件,使得python的測試更簡單
Mock
unittest.mock是用來測試python的庫,這是一個標準庫(python3.3以後)

程式碼覆蓋率
語句覆蓋
條件覆蓋
判斷覆蓋
路徑覆蓋(一般都是使用這種,以上的都有缺陷)

Unittest測試框架
Unittest提供了test case 、test suites、test fixtures、test runner相關的元件

編寫規範
測試模組首先 import unittest
測試類必須繼承unittest.TestCase
測試方法必須以"test_"開頭
模組的名字,類名是沒有特殊要求的。

import unittest

class TestCase(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        print("類裡的所用用例之前執行一次")
    @classmethod
    def tearDownClass(self):
        print("類中的所有用例執行完執行"
) def setUp(self): print("每個用例執行前執行一次") def tearDown(self): print("每個用例結束時執行一次") def test_01case(self): print("01case") self.assertEqual(2,2,"判斷兩個數相等") @unittest.skip def test_02case(self): print("02case"
) @unittest.skipIf("true") def test_03case(self): print("03case") if __name__ == '__main__': unittest.main()

執行方法
執行方法一:
if name == ‘main’:
unittest.main()

執行方法二:
suite=unittest.TestSuite()
suite.addTest(TestMethod(“test_01”))
suite.addTest(TestMethod(“test_01”))
suite.TextTestRunner().run(suite)

執行方法三:此法可以同時測試多個類
Suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
Suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
Suite = unittest.TestSuite([Suite1,Suite2])
unittest.TextTestRunner().run(Suite)

執行方法四:匹配莫哥目錄喜愛所有的以test開頭的py檔案,執行這些檔案下的所有測試用例
test_dir = “./test_case”
discover = unittest.defaultTestLoader.discover(test_dir,pattern=“test*.py”)
discover可以一次呼叫多個指令碼
test_dir被測試指令碼的路徑
pattern 指令碼名稱的匹配規則

unittest結合htmltestrunner 生成帶日誌的測試報告
https://github.com/huilansame/HTMLTestRunner_PY3
步驟:1、先下載該外掛,匯入到專案中
2、填入對應的引數,新增執行套件,執行

    # 生成測試報告
    report_title = "用例的測試報告"
    desc = "用於展示修改樣式後的HTMLTestRunner"
    report_file = "./ExampleReport.html"

    suit = unittest.TestSuit()
    suit.addTest(unittest.TestLoader().loadTestsFromTestCase(TestCase))

    with open(report_file,'wb') as report:
        runner = HTMLTestRunner(stream=report,title=report_title,description=desc)
        runner.run(suit)

練習:

import unittest

class TestCase(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        print("類裡的所用用例之前執行一次")
    @classmethod
    def tearDownClass(self):
        print("類中的所有用例執行完執行")

    def setUp(self):
        print("每個用例執行前執行一次")
    def tearDown(self):
        print("每個用例結束時執行一次")

    def test_01case(self):
        print("01case")
        self.assertEqual(2,2,"判斷兩個數相等")

    @unittest.skip
    def test_02case(self):
        print("02case")

    # @unittest.skipIf("true")
    def test_03case(self):
        print("03case")

if __name__ == '__main__':
    # unittest.main()

    # suit = unittest.TestSuit()
    # suit.addTest(TestCase.test_02case)
    # unittest.TextTestRunner().run(suit)

    # 執行方法三:此法可以同時測試多個類
    # Suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
    # Suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
    # Suite = unittest.TestSuite([Suite1,Suite2])
    # unittest.TextTestRunner().run(Suite)

    # 執行方法四:匹配莫哥目錄喜愛所有的以test開頭的py檔案,執行這些檔案下的所有測試用例
    # test_dir = "./"
    # discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
    # unittest.TextTestRunner().run(discover)

    # 生成測試報告
    report_title = "用例的測試報告"
    desc = "用於展示修改樣式後的HTMLTestRunner"
    report_file = "./ExampleReport.html"

    suit = unittest.TestSuit()
    suit.addTest(unittest.TestLoader().loadTestsFromTestCase(TestCase))

    with open(report_file,'wb') as report:
        runner = HTMLTestRunner(stream=report,title=report_title,description=desc)
        runner.run(suit)