亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python Unittest原理及基本使用方法

瀏覽:2日期:2022-07-06 10:28:18

基本使用步驟:

1、import unittest

2、新建一個(gè)Class繼承unittest.TestCase

3、定義一個(gè)以test開頭的函數(shù)作為測(cè)試用例【必須以test開頭】

4、執(zhí)行測(cè)試用例前都會(huì)先調(diào)用Setup函數(shù)【每個(gè)測(cè)試用例調(diào)用一次】或者setupClass函數(shù)【所有測(cè)試用例僅調(diào)用一次】

5、執(zhí)行完測(cè)試用例后都會(huì)調(diào)用tearDown函數(shù)【多次】和tearDownClass函數(shù)【僅一次】

PS:

1、不能重寫init()

2、函數(shù)必須以test開頭才能作為測(cè)試用例

3、setupClass()和tearDownClass()必須用@classmethod修飾

# -*- encoding=utf-8 -*-import unittestclass Demo1(unittest.TestCase): def setUp(self): print ’調(diào)用 setup 函數(shù)’ @classmethod def setUpClass(cls): print ’調(diào)用 setupClass 函數(shù)’ def tearDown(self): print ’調(diào)用 tearDown 函數(shù)’ @classmethod def tearDownClass(cls): print ’調(diào)用 tearDownClass 函數(shù)’ @staticmethod def test_add(): print ’3 + 5 = {}’.format(3 + 5) @staticmethod def test_sub(): print ’3 - 5 = {}’.format(3 - 5)if __name__ == ’__main__’: unittest.main()

運(yùn)行結(jié)果

調(diào)用 setupClass 函數(shù)

調(diào)用 setup 函數(shù)

3 + 5 = 8

調(diào)用 tearDown 函數(shù)

調(diào)用 setup 函數(shù)

3 - 5 = -2

調(diào)用 tearDown 函數(shù)

調(diào)用 tearDownClass 函數(shù)

Ran 2 tests in 0.012s

OK

TestSuite【測(cè)試組】添加測(cè)試用例進(jìn)行測(cè)試

# -*- encoding=utf-8 -*-class Class1(object): def __init__(self): print ’調(diào)用 Class1 初始化函數(shù)’ self.name = ’未定義姓名’ self.age = ’未定義年齡’ def set_name(self, name): self.name = name def set_age(self, age): self.age = age def print_name(self): print ’Class1 的姓名是:{}’.format(self.name) def print_age(self): print ’Class1 的年齡是:{}’.format(self.age)if __name__ == ’__main__’: pass # -*- encoding=utf-8 -*-import unittestfrom Class1 import Class1class CallClass1(unittest.TestCase): def setUp(self): self.class1 = Class1() pass def tearDown(self): self.class1 = None pass def test_set_name(self): self.class1.set_name(’設(shè)置了名字’) self.class1.print_name() def test_print_name(self): self.class1.print_name()if __name__ == ’__main__’: unittest.main() # -*- encoding=utf-8 -*-import unittestfrom Test_Demo2 import CallClass1if __name__ == ’__main__’: testSuite = unittest.TestSuite() testSuite.addTest(CallClass1(’test_set_name’)) testSuite.addTests( [CallClass1(’test_set_name’), CallClass1(’test_print_name’)]) textTestRunner = unittest.TextTestRunner() textTestRunner.run(testSuite)

運(yùn)行結(jié)果

調(diào)用 Class1 初始化函數(shù)

Class1 的姓名是:設(shè)置了名字

調(diào)用 Class1 初始化函數(shù)

Class1 的姓名是:設(shè)置了名字

調(diào)用 Class1 初始化函數(shù)

Class1 的姓名是:未定義姓名

...

----------------------------------------------------------------------

Ran 3 tests in 0.000s

OK

Process finished with exit code 0

記錄測(cè)試報(bào)告到txt文件

# -*- encoding=utf-8 -*-import unittestfrom Test_Demo2 import CallClass1if __name__ == ’__main__’: testSuite = unittest.TestSuite() testSuite.addTest(CallClass1(’test_set_name’)) testSuite.addTests( [CallClass1(’test_set_name’), CallClass1(’test_print_name’)]) # textTestRunner = unittest.TextTestRunner() # textTestRunner.run(testSuite) # 將測(cè)試結(jié)果輸出到測(cè)試報(bào)告中 with open(’UnittestTextReport.txt’, ’w’) as f: runner = unittest.TextTestRunner(stream=f, verbosity=2) runner.run(testSuite)

記錄測(cè)試報(bào)告到html文件

# 將測(cè)試結(jié)果輸出到測(cè)試報(bào)告html中with open(’HTMLReport.html’, ’w’) as f: runner = HTMLTestRunner(stream=f, title=’MathFunc Test Report’, description=’generated by HTMLTestRunner.’, verbosity=2 ) runner.run(suite)

斷言

當(dāng)斷言為真時(shí),會(huì)執(zhí)行斷言之后的代碼如(在斷言之后打印成功提示信息)

若斷言為假,則之后的代碼不會(huì)被執(zhí)行,打應(yīng)錯(cuò)誤信息,之后提示信息不會(huì)被執(zhí)行;unittest中提示F,失敗,若捕獲到異常,則為E,代表錯(cuò)誤;

補(bǔ)充:若斷言為假,則當(dāng)前函數(shù)def,停止運(yùn)行,但會(huì)運(yùn)行之后的def函數(shù)

重點(diǎn):try語(yǔ)句塊中不要使用assert一起使用,assert斷言為假時(shí),會(huì)拋出異常,測(cè)試用例為失敗,如果放到try中,則會(huì)捕獲到異常,測(cè)試用例永遠(yuǎn)標(biāo)記為通過(guò)

斷言結(jié)果:

. 表示通過(guò) 或者 pass

F False, 表示斷言沒(méi)有通過(guò)

E Error, 表示程序內(nèi)部發(fā)生了錯(cuò)誤。

查找當(dāng)前目錄下所有的測(cè)試用例【默認(rèn)以test開頭的py文件,可以自己配置】

# -*- encoding=utf-8 -*-import unittestimport osif __name__ == ’__main__’: loader = unittest.defaultTestLoader.discover(os.getcwd()) # tests = unittest.defaultTestLoader.discover( # start_dir=’.’, # => 指定查找的目錄 # pattern=’test*.py’ # => 指定查找規(guī)則 # ) runner = unittest.TextTestRunner() runner.run(loader)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久久性视频 | 特黄特色视频 | 国产精彩视频在线观看免费蜜芽 | 最新中文字幕电影在线观看 | 亚洲欧美日韩精品 | 青青草视频破解版 | 国产手机在线国内精品 | 国产福利小视频 | 国产黄在线观看免费观看软件视频 | 日韩高清网站 | 欧美精品在线一区二区三区 | 成人亚州 | 欧美成人免费网在线观看 | 成年女人毛片免费视频 | 99视频精品免视3 | 中文国产成人精品久久无广告 | 国产精品午夜高清在线观看 | 97国内精品久久久久久久影视 | 久久精品一区二区 | 免费看片aⅴ免费大片 | 国产成人啪午夜精品网站 | 精品国产免费一区二区三区五区 | 一级黄色免费片 | 欧美乱码 | 中文国产成人精品少久久 | 日韩在线视频不卡 | 免费精品在线视频 | 欧美日韩国产在线人成dvd | 毛片视频大全 | 在线观看黄色 | 免费一级特黄a | 开心成人激情 | 国产免费私拍一区二区三区 | 国产最新自拍 | 一级毛片卡| 高清中国一级毛片免费 | 久久国产精品亚洲一区二区 | 一级免费黄色片 | 欧美国产成人精品一区二区三区 | 婷婷丁香在线 | 妞干网视频在线观看 |