淺談自動化測試框架開發

在自動化測試項目中,爲了實現更多功能,咱們須要引入不一樣的庫、框架html

首先,你須要將經常使用的這些庫、框架都裝上。web

pip install requests
pip install selenium
pip install appium
pip install pytest
pip install pytest-rerunfailures
pip install allure-pytest
...

而後,在項目中使用他們。瀏覽器

import pytest
import yagmail
from selenium import webdriver


class MyTest:

    def setup(self):
        self.browser = webdriver.Chrome()

    def test_case(self):
        browser.find_element_by_id("user").send_keys("admin")
        browser.find_element_by_id("pawd").send_keys("admin123")
        # ...
        page.close()


if __name__ == "__main__":
    pytest.main(["-s", "-v", "./test_case.py",
        "--html", "./test_report.html",
        "--reruns", "3"
    ])
    yagmail.SMTP()
    # ...

設計與封裝

例如上面的自動化項目代碼,咱們寫多了以後,就會發現經常使用的庫就是那麼幾個,並且用法大同小異,俗稱樣板代碼。app

這個時候你就能夠考慮去作一些封裝,而後把那些經常使用的功能封裝成了一堆公共方法,在你的項目代碼中調用,這樣能夠更快速的完成開發任務,而且便於應對需求的變化。框架

import pytest
from common import mail
from test_data import TestData
from page import LoginPage


class MyTest:

    def test_case(self, browser):
        page = LoginPage(browser)
        page.username.send_keys(TestData.admin)
        page.passowrd.send_keys(TestData.admin_pawd)
        # ...
        page.close()


if __name__ == "__main__":
    pytest.main(["-s", "-v", "./test_case.py",
        "--html", "./test_report.html",
        "--reruns", "3"
    ])
    mail.SMTP()
    # ...

自動化測試框架

自動化測試框架和你在項目中封裝的公共模塊有着一些不一樣。機器學習

  • 它實現的功能更通用:例如,你能夠在項目中封裝一個登陸的公共模塊,用於因此用例的登陸,但不能在框架裏面封裝一個登陸,由於,大家的項目登陸是用帳號密碼,別人家用的是手機號+驗證碼,你封裝的登陸脫離了你的項目就不可用了,顯然不該該放到框架裏。學習

  • 它應該是和項目分離:由於它要給更多的人使用,而且不能輕易被修改,所以,它應該是獨立安裝的,不該該和項目代碼混到一塊兒。若是一個框架被使用者輕易的改來改去。請問,如何升級?使用者想體驗新的版本怎麼辦?測試

  • 它應該有一些設計創新:我可不能夠把selenium的get()方法改個名字叫open()封裝到本身的框架裏。固然能夠,若是整個框架都是在把別人的API本身換個名字包一層,這和紅芯瀏覽器有什麼區別?設計

假設咱們開發的自動化測試框架叫xtestcode

首先,須要安裝xtest。

pip install xtest

使用xtest編寫測試用例。

import xtest
from xtest import TestData
from page import LoginPage


class MyTest:

    def test_case(self, browser):
        page = LoginPage()
        page.username.send_keys(TestData.user)
        page.passowrd.send_keys(TestData.pawd)
        # ...

if __name__ == "__main__":
    xtest.main(mail=True)

它應該以更簡單的方式實現更強大的功能。固然,不一樣類型的框架,難易程度也是不一樣的,實現一個web框架的所須要知識更多,實現一個機器學習框架就更難了,自動化測試框架是站在一堆人的肩膀上來實現,難度係數要低不少。

相關文章
相關標籤/搜索