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

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

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

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

1、前言

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

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

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

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

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

from selenium import webdriverimport unittestfrom time import sleepclass DymLogin(unittest.TestCase): @classmethod def setUpClass(cls) -> None: ''' 所有的用例只需要執(zhí)行一次打開(kāi)瀏覽器操作 ''' 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): ''' 賬號(hào)密碼都為空 ''' 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,'-請(qǐng)輸入登錄賬號(hào)!',msg='Test_login01 login exception') def test_login02(self): ''' 賬號(hào)正確,密碼為空 ''' 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, '-請(qǐng)輸入密碼!', msg='Test_login02 login exception') def test_login03(self): ''' 賬號(hào)密碼都正確 ''' 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、通過(guò)裝飾器跳過(guò)某條用例

添加裝飾器(@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 被跳過(guò)') 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---

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 欧美一级片毛片 | 日韩网站免费 | 亚洲精品亚洲九十七页 | 91高清在线成人免费观看 | 欧美电影精品久久久久 | 在线日韩观看 | 91国语精品自产拍在线观看性色 | 亚洲91色| 香蕉视频免费播放 | 久久99国产精品二区不卡 | 成人国产在线视频 | 哪个网站能看毛片 | 偷拍久久网 | 激情性生活视频在线播放免费观看 | 久热在线播放中文字幕 | 国产精品久久在线观看 | 久久免费精品一区二区 | 成人黄色在线免费观看 | 日韩3区 | 国产大片喷水在线在线视频 | 久久66热re国产毛片基地 | 精品久久香蕉国产线看观看亚洲 | 欧美特黄视频在线观看 | 精品国精品国产自在久国产不卡 | 玖玖视频精品 | 欧美日韩1区| 国产精品成人网 | 成人久久久久久 | 手机国产精品一区二区 | 国产情趣酒店鸳鸯浴在线观看 | 欧美做爰xxxⅹ在线视频hd | 国产区在线观看视频 | 色多多成视频人在线观看 | 青青国产成人精品视频 | 久久99精品一级毛片 | 久久99这里只有精品国产 | 免费看的黄色网址 | 日日好吊妞 | 极品毛片 | 国产合集91合集久久日 | 亚洲一区二区三区不卡在线播放 |