1. 程式人生 > >python之unittest初探

python之unittest初探

最近幾天苦心鑽研unittest,終於略有所得,所以想來跟大家分享一下。有關python和unittest的基礎知識部分就不在一一細說,相信各位也不是小白了。如果需要我整理基礎知識,歡迎留言,我會看情況整理出來。下面直接貼上我的demo模板程式碼,註釋部分主要是思路,有疏漏的地方歡迎大佬們指正。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time     :2018/12/7 11:03
# @Author   :Yosef-夜雨聲煩
# @Email    :[email protected]
# @File:    :model.py
#
@Software :PyCharm Community Edition """ unittest模組總結: 關於這個模組,可沒少讓我吃苦頭啊。以前自己學習這個模組的時候,就不是很懂,這兩天我就一直在鑽研這個東西,總算是略有收穫。 下面的是我總結的模板,僅供參考。在學習PO模式之後,建議把下面模板分開幾個py檔案。 做下面demo發現的新問題:不能把斷言放到try語句中並且是可以被except的異常類包含的,否則就不能通過斷言來設定測試用例的結果。 然後突然想到raise語句,except語句執行完畢之後可以再丟擲異常,這樣就能被定義為fail """ 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)

再次歡迎大家指正!