Python系列之初識unittest

unittest單元測試框架不僅可以適用於單元測試,還可以適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。有關python和unittest的基礎知識部分就不細說了,大家可自行百度進行深入瞭解哦,以下是整個unittest四個比較重要的概念。

test fixture

test case

test suite

test runner

test fixture:簡單來說就是做一些測試過程中需要準備的東西,比如創建臨時的數據庫、文件和目錄等,其中 setUp() 和 setDown() 是最常用的方法。
test case:用戶自定義的測試case的基類,調用run()方法,會依次調用setUP方法、執行用例的方法、tearDown()方法。
test suite:測試用例集合,可以通過addTest()方法手動增加Test Case,也可通過TestLoader自動添加Test Case,TestLoader在添加用例時,會沒有順序。
test runner:運行測試用例的驅動類,可以執行TestCase,也可執行TestSuite。執行後TestCase和Testsuite會自動管理TestResult。

下面貼上簡單unittest的示例代碼:

import unittest
import HTMLTestRunner
import time
class TestCases(unittest.TestCase):
    def setUp(self):
        print("每一條case執行之前都會執行這個方法")
    def tearDown(self):
        print("每一條case執行之後都會執行這個方法\n")
    def test_testcase1(self):
        print("這是一條測試用例case1")
        a = "hello"
        try:
            self.assertTrue(a.isalpha())
            print("測試通過")
        except Exception as e:
            print("出錯啦,錯誤結果是%s" % e)
            print("failed")
            raise e
    def test_testcase2(self):
        print("這是一條測試用例case2")
        b = "123"
        try:
            self.assertTrue(b.isalpha())
            print("測試通過")
        except Exception as e:
            print("出錯啦,錯誤結果是%s" % e)
            print("failed")
            raise e
    def test_testcase3(self):
        print("這是一條測試用例case3")
        c = " "
        try:
            self.assertTrue(c.isalpha())
            print("測試通過")
        except Exception as e:
            print("出錯啦,錯誤結果是%s" % e)
            print("failed")
            raise e
'''
if __name__ == "__main__":
    unittest.main()
    寫上這段代碼可以在命令行直接運行model.py,而且用例全部執行
'''
"""
加載測試用例,方法不僅這種,還有利用loader的方法
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestCases))
or 
suite.addTest(loader.loadTestsFromModule(model))
"""
suite = unittest.TestSuite()
# suite.addTest("test_testcase2")   # 這裏我寫錯了,要加上模塊
suite.addTest(TestCases('test_testcase3'))
"""
指定測試報告的路徑並且定義報告名稱格式
"""
report_dir = "../Test report"
now = time.strftime("%Y-%m-%d %H-%M-%S")
reportname = report_dir + "/" + now + " Test report.html"
"""
運行用例並生成測試報告
"""
with open(reportname, "wb+") as file:
    runner = HTMLTestRunner.HTMLTestRunner(file, 2, title="Model test report",
                                           description="Hello testers! This is the description of Model test"
                                                       "report")
    runner.run(suite)

unittest模塊小結:

關於這個模塊,以前自己學習這個模塊的時候,就不是很懂,這兩天總算是略有收穫。我在做示例時候有了新的發現:不能把斷言放到try語句中並且是可以被except的異常類包含的,否則就不能通過斷言來設置測試用例的結果。
Python系列之初識unittest

睿江雲官網鏈接:http://www.eflycloud.com/#register?salesID=6DGNUTUAV

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章