讓自動化測試程式自動可以執行在各種瀏覽器
(Python/Selenium + Nose/holmium)
Selenium可以在許多瀏覽器上運作。
因此,自動化測試程式中通常會指定這次的測試要用哪一種瀏覽器執行。
driver = webdriver.Firefox()
當我們要執行的瀏覽器很多的時候,程式就必須讀取外部參數的方式來指定要執行的瀏覽器,
程式也會因為選擇瀏覽器的這個動作變得複雜,
有沒有什麼方式不用寫程式就可以完成從外部參數執行時指定呢?
這篇文章就是分享不用寫程式的方式達成!
實作工具的主角分別為 holmium/Nose + Selenium/Python
傳統的實作方法
一般來說,程式會透過宣告 webdriver 來決定要啟動的瀏覽器,例如啟動 fireFox
driver = webdriver.Firefox()
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
import unittest
class holmium_test(holmium.core.TestCase):
def setUp(self):
driver = webdriver.Firefox()
self.driver.get("http://www.google.com")
def test_title(self):
self.assertEquals(self.driver.title, "Google")
if __name__ == "__main__":
unittest.main()
[/pastacode]
當要啟動 Chrome 或是其它瀏覽器時,我們就必須要改寫這段或是讀取外外參數。
如何不用寫程式完成?
我們希望可以透過python 的工具模組,就可以完成執行時指定瀏覽器的動作。
例如這個測試程式 test_simple.py ,執行時只要帶入參數 firefox 就會啟動 firefox
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
nosetests test_simple.py --with-holmium --holmium-browser=firefox
nosetests test_simple.py --with-holmium --holmium-browser=chrome
[/pastacode]
(其中瀏覽器的參數有 firefox,safari,opera,ie,phantomjs,android,iphone or ipad)
我們可以看到這個程式範例中,不需要指定任何的瀏覽器
- self.driver = webdriver.Firefox()
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
from time import sleep
import unittest
import holmium.core
from selenium import webdriver
class holmium_test(holmium.core.TestCase):
def setUp(self):
# comment this line when testing program is done
# Exuection under command line
# nosetest test_simple.py --with-holmium --holmium-browser=firefox
# nosetest test_simple.py --with-holmium --holmium-browser=firefox --holmium-remote=http://localhost:5555/wd/hub
#self.driver = webdriver.Firefox()
self.driver.get("http://www.google.com")
self.driver.maximize_window()
def test_title(self):
self.driver.find_element_by_name("q").send_keys("Holmium Testing")
self.assertEquals(self.driver.title, "Google")
def tearDown(self):
sleep(3)
self.driver.close()
if __name__ == "__main__":
unittest.main()
[/pastacode]
筆者建議開發測試方便,可以一開始選用特定瀏覽器,例如 fireFox
自動化測試開發完成之後,再將這行註解 self.driver = webdriver.Firefox()
由於我們主要透過 nose執行,所以建議程式寫成 unitTest的結構以便執行。
要安裝哪些套件?
既然不用寫程式完成瀏覽器的執行,那要安裝哪些套件呢?
只要額外安裝這兩個套件即可,nose 與 holmium
pip install nosepip install holmium.core |
參考技術文件
http://holmiumcore.readthedocs.org/en/latest/index.html