Selenium+pytest+數據驅動,做好自動化測試
上一篇 /
下一篇 2021-05-17 15:13:21
/ 個人分類:自動化測試
主流自動化框架
selenium工具類封裝
selenium提供了很多方法供我們去完成網頁元素的操作, 在實際開發中,我們的變量只有元素定位 和對元素的操作,其他的都是重復的,為了減少代碼量,我們需要將selenium進行二次封裝,這就是工具類。工具類就是我們的工具箱,里面的方法就是我們的工具。
創建常用工具
創建一個模塊 在項目文件夾下面創建一個模組 new ->Python Package。
from time import sleep
class WebKeys: def __init__(self): self.driver = webdriver.Chrome()
# 訪問url def open(self, url): self.driver.get(url)
# 退出 def quit(self): self.driver.quit()
# 元素定位 def locator(self, name, value): return self.driver.find_element(name, value)
# 輸入框功能 def input(self, name, value, txt): el = self.locator(name, value) el.clear() el.send_keys(txt)` |
導入pytest框架
pytest框架集成了眾多方法方便我們對測試用例進行測試,高效,易用,可以節省大量工作 pytest的測試用例必須以test命名 文件如下:
import pytest from time import * from data_driver import yaml_driver
@pytest.mark.parametrize('data', yaml_driver.load_yaml('../data/baidu.yaml')) def test_login(data): wk = WebKeys() wk.open(data['url']) wk.input(data["name"], data["value"], data["txt"]) sleep(3) wk.quit()
if __name__ == '__main__': pytest.main() |
數據驅動
當我們的測試用例很多的時候我們需要寫很多次用例,利用數據化驅動,就可以節省很多時間 公司常用的有yaml庫。
利用pip導入yaml 同樣的我們要對這個yaml模塊進行二次封裝,方便我們調用。
def load_yaml(path): file = open(path, 'r', encoding='utf-8') data = yaml.load(file, Loader=yaml.FullLoader) return data |
新建一個文件夾用來專門放測試用例數據。
新建一個yaml文件然后按正確格式將數據放到里面。
- url: http://www.baidu.com name: xpath value: //*[@id="kw"] txt: 狗狗幣 - url: http://www.baidu.com name: xpath value: //*[@id="kw"] txt: 火幣 - url: http://www.baidu.com name: xpath value: //*[@id="kw"] txt: 比特幣 - url: http://www.baidu.com name: xpath value: //*[@id="kw"] txt: 以太坊 |
注意這個 - 以及后面url必須在-右下方,否則系統會報文件對齊錯誤。
在測試用例代碼里面有這樣一行代碼,這其實就是調用我們封裝的yaml類,并返回一個變量列表data變量 @pytest.mark.parametrize('data', yaml_driver.load_yaml('../data/baidu.yaml')) ../表示跳到父目錄,然后在通過路徑找到yaml文件 在測試用例里面我們只需要給一個方法指定這個data變量,方法就會被執行四次 相當于寫了四個用例。
if __name__ == '__main__': pytest.main() |
這個pytest.main函數里面有很多參數,方便我們根據自己的需要去調用。
相關閱讀:
- Python基于Selenium實現爬取網絡視頻 (liqianqian1116, 2021-4-29)
- Selenium 4.0有新技能啦,你GET了嗎? (大椿菜, 2021-4-28)
- Selenium元素定位陷阱規避 (liqianqian1116, 2021-5-06)
- 通過Selenium進行博客備份 (liqianqian1116, 2021-5-11)
- 過于依賴?Selenium 抓不到的內容 (liqianqian1116, 2021-5-10)
- Python+Selenium操作瀏覽器全屏截圖 (liqianqian1116, 2021-5-14)
- 使用selenium + OpenCV破解騰訊防水墻滑動驗證碼 (liqianqian1116, 2021-5-13)
- Python使用selenium建立代理IP池訪問網站 (liqianqian1116, 2021-5-18)
- scrapy結合selenium解析動態頁面 (liqianqian1116, 2021-5-25)
- Python應用實戰—基于Selenium的功能測試 (liqianqian1116, 2021-5-17)
收藏
舉報
TAG:
selenium
自動化測試工具
Selenium