讓自動化測試程式自動可以執行在各種瀏覽器 (Python/Nose/holmium)

讓自動化測試程式自動可以執行在各種瀏覽器

(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

 

Leave a Reply

Your email address will not be published. Required fields are marked *