unittest單元測(cè)試框架不僅可以適用于單元測(cè)試,還可以適用WEB自動(dòng)化測(cè)試用例的開(kāi)發(fā)與執(zhí)行,該測(cè)試框架可組織執(zhí)行測(cè)試用例,并且提供了豐富的斷言方法,判斷測(cè)試用例是否通過(guò),最終生成測(cè)試結(jié)果。有關(guān)python和unittest的基礎(chǔ)知識(shí)部分就不細(xì)說(shuō)了,大家可自行百度進(jìn)行深入了解哦,以下是整個(gè)unittest四個(gè)比較重要的概念。
test fixture
test case
test suite
test runner
test fixture:簡(jiǎn)單來(lái)說(shuō)就是做一些測(cè)試過(guò)程中需要準(zhǔn)備的東西,比如創(chuàng)建臨時(shí)的數(shù)據(jù)庫(kù)、文件和目錄等,其中 setUp() 和 setDown() 是最常用的方法。
test case:用戶自定義的測(cè)試case的基類,調(diào)用run()方法,會(huì)依次調(diào)用setUP方法、執(zhí)行用例的方法、tearDown()方法。
test suite:測(cè)試用例集合,可以通過(guò)addTest()方法手動(dòng)增加Test Case,也可通過(guò)TestLoader自動(dòng)添加Test Case,TestLoader在添加用例時(shí),會(huì)沒(méi)有順序。
test runner:運(yùn)行測(cè)試用例的驅(qū)動(dòng)類,可以執(zhí)行TestCase,也可執(zhí)行TestSuite。執(zhí)行后TestCase和Testsuite會(huì)自動(dòng)管理TestResult。
下面貼上簡(jiǎn)單unittest的示例代碼:
import unittest
import HTMLTestRunner
import time
class TestCases(unittest.TestCase):
def setUp(self):
print("每一條case執(zhí)行之前都會(huì)執(zhí)行這個(gè)方法")
def tearDown(self):
print("每一條case執(zhí)行之后都會(huì)執(zhí)行這個(gè)方法\n")
def test_testcase1(self):
print("這是一條測(cè)試用例case1")
a = "hello"
try:
self.assertTrue(a.isalpha())
print("測(cè)試通過(guò)")
except Exception as e:
print("出錯(cuò)啦,錯(cuò)誤結(jié)果是%s" % e)
print("failed")
raise e
def test_testcase2(self):
print("這是一條測(cè)試用例case2")
b = "123"
try:
self.assertTrue(b.isalpha())
print("測(cè)試通過(guò)")
except Exception as e:
print("出錯(cuò)啦,錯(cuò)誤結(jié)果是%s" % e)
print("failed")
raise e
def test_testcase3(self):
print("這是一條測(cè)試用例case3")
c = " "
try:
self.assertTrue(c.isalpha())
print("測(cè)試通過(guò)")
except Exception as e:
print("出錯(cuò)啦,錯(cuò)誤結(jié)果是%s" % e)
print("failed")
raise e
'''
if __name__ == "__main__":
unittest.main()
寫上這段代碼可以在命令行直接運(yùn)行model.py,而且用例全部執(zhí)行
'''
"""
加載測(cè)試用例,方法不僅這種,還有利用loader的方法
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestCases))
or
suite.addTest(loader.loadTestsFromModule(model))
"""
suite = unittest.TestSuite()
# suite.addTest("test_testcase2") # 這里我寫錯(cuò)了,要加上模塊
suite.addTest(TestCases('test_testcase3'))
"""
指定測(cè)試報(bào)告的路徑并且定義報(bào)告名稱格式
"""
report_dir = "../Test report"
now = time.strftime("%Y-%m-%d %H-%M-%S")
reportname = report_dir + "/" + now + " Test report.html"
"""
運(yùn)行用例并生成測(cè)試報(bào)告
"""
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模塊小結(jié):
關(guān)于這個(gè)模塊,以前自己學(xué)習(xí)這個(gè)模塊的時(shí)候,就不是很懂,這兩天總算是略有收獲。我在做示例時(shí)候有了新的發(fā)現(xiàn):不能把斷言放到try語(yǔ)句中并且是可以被except的異常類包含的,否則就不能通過(guò)斷言來(lái)設(shè)置測(cè)試用例的結(jié)果。
睿江云官網(wǎng)鏈接:http://www.eflycloud.com/#register?salesID=6DGNUTUAV
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
