如何透過Jenkins Dashboard顯示Selenium的測試結果?

如何透過Jenkins Dashboard顯示Selenium的測試結果?

Jenkins 在Continuous Integration 扮演重要的腳色。

我們希望 Daily build 產生之後,自動 trigger Selenium的自動化測試程式,

並且能夠將測試的結果回到 Jenkins 查看。如此一來,

研發團隊每天只要看 Jenkins Dashboard就可以得知每一個 build 的狀態與最後自動化測試的結果。

這篇文章主要說明,Selenium要如何產生Jenkins 可以閱讀的測試結果.

xmlrunner

為了要讓 Selenium/python可以產生出 Jenkins 可以閱讀的測試結果,

我們必須要測試結果輸出為 XML格式。

python有一個套件可以幫助我們完成這件事情。XMLRunner

如果python環境有安裝好 pip,透過下列指令直可安裝 XMLRunner套件。

Pip     install    xmlrunner

XMLRunner 範例程式

要如何使用XMLrunner 讓 test case 輸出為 XML格式呢?

[pastacode lang=”python” message=”xmlRunner Code Sample” highlight=”” provider=”manual”]

import unittest
import xmlrunner

class TheXMLTest(unittest.TestCase):

    def testcaseOne(self):
        self.assertEquals(1, 1)

    def testcaseTwo(self):
        self.assertEquals(2, 2)

    def testcaseThree(self):
        self.assertEquals(3, 4)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TheXMLTest)
    xmlrunner.XMLTestRunner().run(suite)

[/pastacode]

Selenium/XMLRunner 範例程式

[pastacode lang=”python” message=”Selenium XMLRunner Sample code” highlight=”” provider=”manual”]

from selenium import webdriver
import datetime, time, unittest
from xmlrunner import xmlrunner

class ScreenShotTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.get("http://www.google.com")

    def test_google_button1(self):
        driver = self.driver
        try:
            # Visit Google page and locate the Search button
            googleSearchbtn = driver.find_element_by_name("btnK")
            # Get the Search butoon value "Google Search"
            self.assertEqual("Google Search", googleSearchbtn.get_attribute("value"))

        except Exception:
            st = datetime.datetime.fromtimestamp(time.time()).strftime('%Y%m%d_%H%M%S')
            file_name = "ScreenShot_on_Fail" + st + ".png"
            driver.save_screenshot(file_name)
            raise

    def test_google_button2(self):
        driver = self.driver
        try:
            # try to get another web element not exist
            googleSearchbtn2 = driver.find_element_by_name("btnK2")

        except Exception:
            st = datetime.datetime.fromtimestamp(time.time()).strftime('%Y%m%d_%H%M%S')
            file_name = "ScreenShot_on_Fail" + st + ".png"
            driver.save_screenshot(file_name)
            raise

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    #unittest.main(verbosity=2)
    suite = unittest.TestLoader().loadTestsFromTestCase(ScreenShotTest)
    xmlrunner.XMLTestRunner().run(suite)

[/pastacode]

XMLRunner Report Sample

執行結果如下圖。

xmlrunner report sample

 

Jenkins 設定

產生出XML report 但是Jenkins 要如何設定呢?

這時候透過 “publish Junit test result reoprt” ,設定可以讀取的 XML testing report.

XMLreport Jenkins Configuration

最後回到 Jenkins Testing result 的Dashboard,應該可以看到相關的測試結果。

 

 

Leave a Reply

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