「Learning Selenium Testing Tools with Python」(2014年)を読みながら、Seleniumを触る #3 (HTMLレポート出力)
Learning Selenium Testing Tools with Python (English Edition)
- 作者:Gundecha, Unmesh
- 発売日: 2014/12/30
- メディア: Kindle版
テスト自動化ツールを触る機会が巡ってきたので、体系的にやり方を学ぶためにカキカキ…。
ちなみに…、下記のコードサンプルは、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レポート
補足メモ
いまいち、「TestLoader」がわかっていないので、のちに調べる必要がありそう…。
参考
GitHub - oldani/HtmlTestRunner: A Test Runner in python, for Human Readable HTML Reports