电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python Unittest原理及基本使用方法

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

基本使用步驟:

1、import unittest

2、新建一個Class繼承unittest.TestCase

3、定義一個以test開頭的函數作為測試用例【必須以test開頭】

4、執行測試用例前都會先調用Setup函數【每個測試用例調用一次】或者setupClass函數【所有測試用例僅調用一次】

5、執行完測試用例后都會調用tearDown函數【多次】和tearDownClass函數【僅一次】

PS:

1、不能重寫init()

2、函數必須以test開頭才能作為測試用例

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

# -*- encoding=utf-8 -*-import unittestclass Demo1(unittest.TestCase): def setUp(self): print ’調用 setup 函數’ @classmethod def setUpClass(cls): print ’調用 setupClass 函數’ def tearDown(self): print ’調用 tearDown 函數’ @classmethod def tearDownClass(cls): print ’調用 tearDownClass 函數’ @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()

運行結果

調用 setupClass 函數

調用 setup 函數

3 + 5 = 8

調用 tearDown 函數

調用 setup 函數

3 - 5 = -2

調用 tearDown 函數

調用 tearDownClass 函數

Ran 2 tests in 0.012s

OK

TestSuite【測試組】添加測試用例進行測試

# -*- encoding=utf-8 -*-class Class1(object): def __init__(self): print ’調用 Class1 初始化函數’ 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(’設置了名字’) 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)

運行結果

調用 Class1 初始化函數

Class1 的姓名是:設置了名字

調用 Class1 初始化函數

Class1 的姓名是:設置了名字

調用 Class1 初始化函數

Class1 的姓名是:未定義姓名

...

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

Ran 3 tests in 0.000s

OK

Process finished with exit code 0

記錄測試報告到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) # 將測試結果輸出到測試報告中 with open(’UnittestTextReport.txt’, ’w’) as f: runner = unittest.TextTestRunner(stream=f, verbosity=2) runner.run(testSuite)

記錄測試報告到html文件

# 將測試結果輸出到測試報告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)

斷言

當斷言為真時,會執行斷言之后的代碼如(在斷言之后打印成功提示信息)

若斷言為假,則之后的代碼不會被執行,打應錯誤信息,之后提示信息不會被執行;unittest中提示F,失敗,若捕獲到異常,則為E,代表錯誤;

補充:若斷言為假,則當前函數def,停止運行,但會運行之后的def函數

重點:try語句塊中不要使用assert一起使用,assert斷言為假時,會拋出異常,測試用例為失敗,如果放到try中,則會捕獲到異常,測試用例永遠標記為通過

斷言結果:

. 表示通過 或者 pass

F False, 表示斷言沒有通過

E Error, 表示程序內部發生了錯誤。

查找當前目錄下所有的測試用例【默認以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’ # => 指定查找規則 # ) runner = unittest.TextTestRunner() runner.run(loader)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 超声波气象站_防爆气象站_空气质量监测站_负氧离子检测仪-风途物联网 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 合肥风管加工厂-安徽螺旋/不锈钢风管-通风管道加工厂家-安徽风之范 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 浙江浩盛阀门有限公司| 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | 范秘书_懂你的范文小秘书| 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 网站seo优化_seo云优化_搜索引擎seo_启新网络服务中心 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 海南在线 海南一家 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 深圳活动策划公司|庆典策划|专业公关活动策划|深圳艺典文化传媒 重庆中专|职高|技校招生-重庆中专招生网 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 中央空调维修、中央空调保养、螺杆压缩机维修-苏州东菱空调 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 |