Flying Cat Penguin

ゆるゆる仕事、ソフトウェアテスティング関連のことについて綴ります。

「Learning Selenium Testing Tools with Python」(2014年)を読みながら、Seleniumを触る #3 (HTMLレポート出力)

テスト自動化ツールを触る機会が巡ってきたので、体系的にやり方を学ぶためにカキカキ…。
ちなみに…、下記のコードサンプルは、windows10の環境でのコードですので、Linux系統は別途カスタマイズしてください。

今回は、HTMLレポート出力。
CIツールなどと連携する場合、HTMLファイルで見せたいときがあります。なのでそのためのやり方を確認してみました。
ちなみに書籍にある「HTMLTestRunner」を使おうと思ったのですが、モジュールが動かなかったので、ほぼ似たような他モジュールで代用しています。

コードサンプル

[selenium_search_htmlreport.py]

import unittest
from selenium import webdriver
import HtmlTestRunner

# import another testcases file
from import_testcase import ImportTests

class SearchTests(unittest.TestCase):
    def setUp(self): 
        # create a new Chrome session
        self.driver = webdriver.Chrome(executable_path=r'C:/tmp/selenium/chromedriver_win32/chromedriver.exe')
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        
        # navigate to page
        self.driver.get("https://www.google.co.jp")

    def test_search_by_keyword_selenium(self):
        # get the search textbox
        self.search_field = self.driver.find_element_by_name("q")
        self.search_field.clear()
        
        # enter search keyword and submit
        self.search_field.send_keys("selenium")
        self.search_field.submit()
        
        # get all the anchor elements which have title and URL displayed
        # currently on result page using find_elements_by_xpath method
        self.assertEqual(10, len(self.driver.find_elements_by_xpath('//a/h3')))

    def test_search_by_keyword_odan(self):
        # get the search textbox
        self.search_field = self.driver.find_element_by_name("q")
        self.search_field.clear()
        
        # enter search keyword and submit
        self.search_field.send_keys("odan")
        self.search_field.submit()
        
        # get all the anchor elements which have title and URL displayed
        # currently on result page using find_elements_by_xpath method
        self.assertEqual(10, len(self.driver.find_elements_by_xpath('//a/h3')))


    def tearDown(self):
        # close the browser window
        self.driver.quit()

def SearchTestsuite():
    # select testcases for SearchTestSuite
    suite = unittest.TestSuite()
    suite.addTest(SearchTests('test_search_by_keyword_selenium'))  
    suite.addTest(SearchTests('test_search_by_keyword_odan'))
    suite.addTest(ImportTests('test_search_by_keyword_selenium'))  
    suite.addTest(ImportTests('test_search_by_keyword_odan'))    
    return suite

if __name__ == '__main__':

    # configure HTMLTestRunner options
    runner = HtmlTestRunner.HTMLTestRunner(combine_reports=True)

    #runner = unittest.TextTestRunner(verbosity=2)
    runner.run(SearchTestsuite())

ちなみに動かすとこんな感じ。

$ python search_html_report.py

Running tests...
----------------------------------------------------------------------
 test_search_by_keyword_selenium (__main__.SearchTests) ... OK (14.915632)s
 test_search_by_keyword_odan (__main__.SearchTests) ... OK (12.499693)s
 test_search_by_keyword_selenium (import_testcase.ImportTests) ... OK (15.730529)s
 test_search_by_keyword_odan (import_testcase.ImportTests) ... OK (16.212669)s

----------------------------------------------------------------------
Ran 4 tests in 0:00:59

OK



Generating HTML reports...
reports\TestResults_SearchTests_ImportTests_2020-05-25_08-42-25.html

出力されたHTMLレポート
f:id:dandan_611:20200525164646p:plain


補足メモ
いまいち、「TestLoader」がわかっていないので、のちに調べる必要がありそう…。

参考
GitHub - oldani/HtmlTestRunner: A Test Runner in python, for Human Readable HTML Reports