在自動化測試項目中,爲了實現更多功能,咱們須要引入不一樣的庫、框架
。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本身換個名字包一層,這和紅芯瀏覽器
有什麼區別?設計
假設咱們開發的自動化測試框架叫xtest
。code
首先,須要安裝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框架的所須要知識更多,實現一個機器學習框架就更難了,自動化測試框架是站在一堆人的肩膀上來實現,難度係數要低不少。