• Selenium+pytest+數據驅動,做好自動化測試

    上一篇 / 下一篇  2021-05-17 15:13:21 / 個人分類:自動化測試

      主流自動化框架
      seleniumweb端自動化框架,(行業里面最核心的框架)appium:手機app端框架。
      requests:接口測試。

      selenium工具類封裝
      selenium提供了很多方法供我們去完成網頁元素的操作, 在實際開發中,我們的變量只有元素定位 和對元素的操作,其他的都是重復的,為了減少代碼量,我們需要將selenium進行二次封裝,這就是工具類。工具類就是我們的工具箱,里面的方法就是我們的工具。

      創建常用工具
      創建一個模塊 在項目文件夾下面創建一個模組 new ->Python Package。

      系統會生成一個帶init文件的python 框架文件夾。

    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框架集成了眾多方法方便我們對測試用例進行測試,高效,易用,可以節省大量工作 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函數里面有很多參數,方便我們根據自己的需要去調用。

    TAG: selenium 自動化測試工具 Selenium

    引用 刪除 Christina_0709   /   2021-10-08 17:45:17
    5
     

    評分:0

    我來說兩句

    Open Toolbar
    久久97久久97精品免视_欧洲国产伦久久久久久_91麻豆精品国产自产在线观_伊人久久大香线蕉综合av