欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年09月08日 10:09:57   作者:多測師_鄭sir  
這篇文章主要介紹了Python unittest裝飾器實現(xiàn)原理及代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

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 unittest

class 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 webdriver
import unittest
from time import sleep

class 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.253s

OK
"""

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

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

import unittest

class 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.000s
OK (skipped=1)

---start---
case testbbb
---end---

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

相關(guān)文章

  • python如何實現(xiàn)全角半角的相互轉(zhuǎn)換

    python如何實現(xiàn)全角半角的相互轉(zhuǎn)換

    這篇文章主要介紹了python如何實現(xiàn)全角半角的相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • python操作excel的方法(xlsxwriter包的使用)

    python操作excel的方法(xlsxwriter包的使用)

    這篇文章主要為大家詳細(xì)介紹了python操作excel的方法,xlsxwriter包的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python實現(xiàn)對excel進(jìn)行數(shù)據(jù)剔除操作實例

    python實現(xiàn)對excel進(jìn)行數(shù)據(jù)剔除操作實例

    python在數(shù)據(jù)分析這方便的介紹應(yīng)該不用多說了,下面這篇文章主要給大家介紹了關(guān)于利用python實現(xiàn)對excel進(jìn)行數(shù)據(jù)剔除操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • Python關(guān)于抽獎系統(tǒng)的思考與設(shè)計思路

    Python關(guān)于抽獎系統(tǒng)的思考與設(shè)計思路

    這篇文章主要介紹了Python關(guān)于抽獎系統(tǒng)的思考與設(shè)計思路,本文通過一些簡單的例子來說一說抽獎系統(tǒng)背后的邏輯,看看究竟是你運氣不好還是系統(tǒng)邏輯在作怪,需要的朋友可以參考下
    2023-03-03
  • Tornado路由與Application的實現(xiàn)

    Tornado路由與Application的實現(xiàn)

    本文主要介紹了Tornado路由與Application的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Python圖像運算之圖像灰度非線性變換詳解

    Python圖像運算之圖像灰度非線性變換詳解

    這篇文章將詳細(xì)講解圖像灰度非線性變換。圖像灰度非線性變換主要包括對數(shù)變換、冪次變換、指數(shù)變換、分段函數(shù)變換,通過非線性關(guān)系對圖像進(jìn)行灰度處理,本文主要講解三種常見類型的灰度非線性變換,感興趣的可以了解一下
    2022-03-03
  • python如何實現(xiàn)視頻轉(zhuǎn)代碼視頻

    python如何實現(xiàn)視頻轉(zhuǎn)代碼視頻

    這篇文章主要為大家詳細(xì)介紹了python如何實現(xiàn)視頻轉(zhuǎn)代碼視頻,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python使用paddleOCR批量識別pdf的方法

    Python使用paddleOCR批量識別pdf的方法

    PaddleOCR可以在圖像、文本、表格等多種場景下進(jìn)行文字識別,本文主要介紹了Python使用paddleOCR批量識別pdf的方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Python?3.11.0下載安裝并使用help查看模塊信息的方法

    Python?3.11.0下載安裝并使用help查看模塊信息的方法

    本文給大家介紹Python?3.11.0下載安裝并使用help查看模塊信息的相關(guān)知識,首先給大家講解了Python?3.11.0下載及安裝緊接著介紹了在命令行使用help查看模塊信息的方法,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • 使用Python中的cookielib模擬登錄網(wǎng)站

    使用Python中的cookielib模擬登錄網(wǎng)站

    這篇文章主要介紹了使用Python中的cookielib模擬登錄網(wǎng)站,用作生成cookie然后登錄,需要的朋友可以參考下
    2015-04-04

最新評論