<code id="ebytu"><sup id="ebytu"><track id="ebytu"></track></sup></code>
    <td id="ebytu"><option id="ebytu"></option></td>
    <pre id="ebytu"><label id="ebytu"><menu id="ebytu"></menu></label></pre>
    <acronym id="ebytu"><label id="ebytu"><xmp id="ebytu"></xmp></label></acronym>
  1. <td id="ebytu"></td>

    <track id="ebytu"><ruby id="ebytu"></ruby></track>


            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
            亚洲春色校园小说_欧洲精品色在线观看视频_国产思思99RE99在线观看_天天躁日日躁狠狠躁日日躁

            <code id="ebytu"><sup id="ebytu"><track id="ebytu"></track></sup></code>
              <td id="ebytu"><option id="ebytu"></option></td>
              <pre id="ebytu"><label id="ebytu"><menu id="ebytu"></menu></label></pre>
              <acronym id="ebytu"><label id="ebytu"><xmp id="ebytu"></xmp></label></acronym>
            1. <td id="ebytu"></td>

              <track id="ebytu"><ruby id="ebytu"></ruby></track>