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

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

Python unittest裝飾器實現(xiàn)原理及代碼

瀏覽:7日期:2022-07-12 08:01:05

1、前言

前面講到unittest里面setUp可以在每次執(zhí)行用例前執(zhí)行,這樣有效的減少了代碼量,但是有個弊端,比如打開瀏覽器操作,每次執(zhí)行用例時候都會重新打開,這樣就會浪費很多時間。

于是就想是不是可以只打開一次瀏覽器,執(zhí)行完用例再關(guān)閉呢?這就需要用到裝飾器(@classmethod)來解決了。

2、@classmethod 裝飾器中的 setUpClass() 和 tearDownClass() 與 setUp() 和 tearDown() 的區(qū)別

setUp():每個測試 case 運行之前運行 tearDown():每個測試 case 運行完之后執(zhí)行 setUpClass():必須使用 @classmethod 裝飾器, 所有 case 運行之前只運行一次 @是修飾符,classmethod 是 python 里的類方法 tearDownClass():必須使用 @classmethod 裝飾器, 所有 case 運行完之后只運行一次

import unittestclass Test(unittest.TestCase): @classmethod def setUpClass(cls) -> None: print('-----開始執(zhí)行用例-----') def setUp(self) -> None: print('執(zhí)行用例準(zhǔn)備動作...') def test01(self): print('第一條用例正在執(zhí)行...') def test02(self): print('第二條用例正在執(zhí)行...') def tearDown(self) -> None: print('用例執(zhí)行完結(jié)動作...') @classmethod def tearDownClass(cls) -> None: print('-----用例執(zhí)行結(jié)束-----') if __name__ == ’__main__’: unittest.main()#執(zhí)行結(jié)果如下:'''-----開始執(zhí)行用例-----執(zhí)行用例準(zhǔn)備動作...第一條用例正在執(zhí)行...用例執(zhí)行完結(jié)動作...執(zhí)行用例準(zhǔn)備動作...第二條用例正在執(zhí)行...用例執(zhí)行完結(jié)動作...-----用例執(zhí)行結(jié)束-----'''

from selenium import webdriverimport unittestfrom time import sleepclass DymLogin(unittest.TestCase): @classmethod def setUpClass(cls) -> None: ''' 所有的用例只需要執(zhí)行一次打開瀏覽器操作 ''' print('Test start...') cls.dr = webdriver.Chrome() cls.dr.get('http://www.duoyoumi.com/') cls.dr.implicitly_wait(10) cls.dr.maximize_window() cls.dr.find_element_by_class_name('login').click() sleep(1) @classmethod def tearDownClass(cls) -> None: sleep(2) cls.dr.quit() print('Test end...') def test_login01(self): ''' 賬號密碼都為空 ''' self.dr.find_element_by_name('loginName').clear() self.dr.find_element_by_name('loginPwd').clear() self.dr.find_element_by_xpath(’//*[@id='loginForm']/div/div/div/div[2]/div[1]/div[2]’).click() #登錄操作 TipsMsg = self.dr.find_element_by_class_name('promptLogin').text self.assertEqual(TipsMsg,'-請輸入登錄賬號!',msg='Test_login01 login exception') def test_login02(self): ''' 賬號正確,密碼為空 ''' self.dr.find_element_by_name('loginName').clear() self.dr.find_element_by_name('loginPwd').clear() self.dr.find_element_by_name('loginName').send_keys('17779828887') self.dr.find_element_by_xpath(’//*[@id='loginForm']/div/div/div/div[2]/div[1]/div[2]’).click() # 登錄操作 TipsMsg = self.dr.find_element_by_class_name('promptLogin').text self.assertEqual(TipsMsg, '-請輸入密碼!', msg='Test_login02 login exception') def test_login03(self): ''' 賬號密碼都正確 ''' self.dr.find_element_by_name('loginName').clear() self.dr.find_element_by_name('loginPwd').clear() self.dr.find_element_by_name('loginName').send_keys('17779828887') self.dr.find_element_by_name('loginPwd').send_keys('zy295240???') self.dr.find_element_by_xpath(’//*[@id='loginForm']/div/div/div/div[2]/div[1]/div[2]’).click() #登錄操作 sleep(2) TipsMsg = self.dr.find_element_by_css_selector('#w_nav_temp_1000 > div.fr.dl > a:nth-child(4)').text self.assertEqual(TipsMsg,'[退出]',msg='Test_login03 login exception')if __name__ == ’__main__’: unittest.main()#執(zhí)行結(jié)果如下'''Test start......Test end...----------------------------------------------------------------------Ran 3 tests in 25.253sOK'''

3、通過裝飾器跳過某條用例

添加裝飾器(@unittest.skip(''))

import unittestclass Test(unittest.TestCase): def setUp(self) -> None: print('---start---') def tearDown(self) -> None: print('---end---') def testbbb(self): print('case testbbb') @unittest.skip('testaaa 被跳過') def testaaa(self): print('case testaaa')if __name__ == ’__main__’: unittest.main()# 結(jié)果如下s.----------------------------------------------------------------------Ran 2 tests in 0.000sOK (skipped=1)---start---case testbbb---end---

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 三防漆–水性三防漆–水性浸渍漆–贝塔三防漆厂家 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 隧道烘箱_隧道烘箱生产厂家-上海冠顶专业生产烘道设备 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 恒温水槽与水浴锅-上海熙浩实业有限公司 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 密集架-手摇-智能-移动-价格_内蒙古档案密集架生产厂家 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | 芝麻黑-芝麻黑石材厂家-永峰石业| 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 海南在线 海南一家 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 淬火设备-钎焊机-熔炼炉-中频炉-锻造炉-感应加热电源-退火机-热处理设备-优造节能 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 电动葫芦-河北悍象起重机械有限公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 |