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

selenium+unittest實現(xiàn)web自動化的示例代碼

 更新時間:2023年03月02日 08:33:05   作者:小胖虎*  
本文主要介紹了selenium+unittest實現(xiàn)web自動化的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前面我們學習unittest 的目的是用它編寫 Web 自動化測試用例,所以接下來會將 unittest 與Selenium 結合起來寫一個 Web 自動化測試的例子。

我們?nèi)砸园俣人阉鳛槔?,?chuàng)建 test_baidu.py 文件

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2023/2/25
"""
 
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
 
 
class TestBaidu(unittest.TestCase):
 
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.baidu_url = 'https://www.baidu.com'
 
    def test_search_key_unittest(self):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys('unittest')
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
        title = self.driver.title
        self.assertEqual(title, 'unittest_百度搜索')
 
    def test_search_key_selenium(self):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys('selenium')
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
        title = self.driver.title
        self.assertEqual(title, 'selenium_百度搜索')
 
    def tearDown(self):
        self.driver.close()
 
 
if __name__ == '__main__':
    unittest.main

對上面的代碼不做過多介紹,都是以 unittest 創(chuàng)建測試類和方法的。方法中的代碼是Selenium 腳本。不過,這里的代碼存在一些問題,我們來一一改進。

首先,觀察代碼可以發(fā)現(xiàn),兩個測試用例中的步驟是一樣的,唯一的區(qū)別是搜索的關鍵字和斷言的結果不同。在學習過python模塊化,所以這里把操作步驟封裝成一個方法。

代碼如下:

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2023/2/25
"""
 
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
 
 
class TestBaidu(unittest.TestCase):
 
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.baidu_url = 'https://www.baidu.com'
    
    # 將百度首頁的訪問和搜索過程封裝成一個baidu_search()方法
    def baidu_search(self, search_key):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys(search_key)
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
 
    def test_search_key_unittest(self):
        search_key = 'unittest'
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + '百度搜索')
 
    def test_search_key_selenium(self):
        search_key = "selenium"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + "百度搜索")
    
    def tearDown(self):
        self.driver.close()
 
if __name__ == '__main__':
    unittest.main

這里將百度首頁的訪問和搜索過程封裝成一個 baidu_search()方法,并定義 search_key參數(shù)為搜索關鍵字,根據(jù)接收的關鍵字執(zhí)行不同內(nèi)容的搜索。這里的 baidu_search()方法不會被當作測試用例執(zhí)行,因為根據(jù) unittest 查找和執(zhí)行測試用例的規(guī)則,它只會把以“test”開頭的方法當作測試用例。

另一個值得討論的問題是,測試用例的斷言要不要寫在封裝的方法中?從前面的代碼可以看出,測試的斷言點是一樣的。這里更傾向于把斷言寫在每一條測試用例里面。因為很多時候就算操作步驟是一樣的,斷言點也不完全一樣。從設計的角度來看,斷言寫在每一個測試用例中也會更加清晰。

另外我們還發(fā)現(xiàn)每一條測試用例都要啟動和關閉一次瀏覽器,這是非常耗時的,那么如何減少瀏覽器的啟動和關閉次數(shù)呢?利用前面學過的setUpClass/tearDownClass可以解決這個問題。

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2023/2/25
"""
 
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
 
 
class TestBaidu(unittest.TestCase):
 
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()
        cls.baidu_url = 'https://www.baidu.com'
 
    def baidu_search(self, search_key):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys(search_key)
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
 
    def test_search_key_unittest(self):
        search_key = 'unittest'
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + '_百度搜索')
 
    def test_search_key_selenium(self):
        search_key = 'selenium'
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + '_百度搜索')
 
    @classmethod
    def tearDownClass(cls):
        cls.driver.close()
 
 
if __name__ == '__main__':
    unittest.main

修改前:

修改后:

可以看到修改后省去16秒之多,這里雖然我們將 driver 驅動定義為 cls.driver,但是在每個測試用例中使用時依然為self.driver。

當整個測試類中的所有測試用例都運行完成后,會調(diào)用 cls.driver.quit()關閉瀏覽器。

當一個測試類中有多條測試用例時,這種方式將會大大縮短測試用例的執(zhí)行時間。

這樣我們就得到了一個簡單的百度搜索的自動化測試腳本,讀者可以根據(jù)此例試試別的場景。

到此這篇關于selenium+unittest實現(xiàn)web自動化的示例代碼的文章就介紹到這了,更多相關selenium unittest web自動化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python構建簡單線性回歸模型

    Python構建簡單線性回歸模型

    這篇文章主要介紹了Python構建簡單線性回歸模型,線性回歸表示發(fā)現(xiàn)函數(shù)使用線性組合表示輸入變量。簡單線性回歸很容易理解,使用了基本的回歸技術,一旦理解了這些基本概念,可以更好地學習其他類型的回歸模型
    2022-08-08
  • 答題輔助python代碼實現(xiàn)

    答題輔助python代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了答題輔助python代碼實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python靜態(tài)Web服務器面向對象處理客戶端請求

    Python靜態(tài)Web服務器面向對象處理客戶端請求

    這篇文章主要為大家介紹了Python面向對象實現(xiàn)靜態(tài)Web服務器處理客戶端請求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python 函數(shù)嵌套及多函數(shù)共同運行知識點講解

    python 函數(shù)嵌套及多函數(shù)共同運行知識點講解

    在本篇文章里小編給各位整理的是一篇關于python 函數(shù)嵌套及多函數(shù)共同運行知識點講解,需要的朋友們可以學習下。
    2020-03-03
  • python遞歸打印某個目錄的內(nèi)容(實例講解)

    python遞歸打印某個目錄的內(nèi)容(實例講解)

    下面小編就為大家?guī)硪黄猵ython遞歸打印某個目錄的內(nèi)容(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python+Pygame實戰(zhàn)之炫舞小游戲的實現(xiàn)

    Python+Pygame實戰(zhàn)之炫舞小游戲的實現(xiàn)

    提到QQ炫舞,可能很多人想到的第一個詞是“青春”?;腥婚g,這個承載了無數(shù)人回憶與時光的游戲品牌,已經(jīng)走到了第十幾個年頭。今天小編就來給大家嘗試做一款簡單的簡陋版的小游戲——《舞動青春*炫舞》,感興趣的可以了解一下
    2022-12-12
  • pandas分組聚合(agg,transform,apply)

    pandas分組聚合(agg,transform,apply)

    在SQL中我們經(jīng)常使用 GROUP BY 將某個字段,按不同的取值進行分組, 在pandas中也有groupby函數(shù),本文主要介紹了pandas分組聚合(agg,transform,apply),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • Python爬蟲之UserAgent的使用實例

    Python爬蟲之UserAgent的使用實例

    今天小編就為大家分享一篇關于Python爬蟲之UserAgent的使用實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python實現(xiàn)讀取txt文件并畫三維圖簡單代碼示例

    Python實現(xiàn)讀取txt文件并畫三維圖簡單代碼示例

    這篇文章主要介紹了Python實現(xiàn)讀取txt文件并畫三維圖簡單代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 如何用Python識別車牌的示例代碼

    如何用Python識別車牌的示例代碼

    車牌識別系統(tǒng)計算機視頻圖像識別技術在車輛牌照識別中的一種應用,本文主要介紹了如何用Python識別車牌的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論