class WebTester(object): """Visits pages in browsers, takes screenshots.""" def __init__(self, tests, report_name): """constructor. @param tests (list) : WebTest namedtuples @param report_name (str) : name for the report. Used in filename. """ self._tests = tests self._results = WebTestResults() self._report_name = report_name def start(self): """run the tests.""" for test in self._tests: self.run_test(test) self._results.write_to_file(self._report_name) def run_test(self, test): """run test. @param test (WebTest) : webtest namedtuple """ driver = webdriver.Remote(test.browser_node_uri, test.browser_selenium_spec) for resource in test.resources_to_test: driver.get('http://www.google.com') t = datetime.datetime.now() driver.get(resource) t = str(datetime.datetime.now() - t) time.sleep(5) fn = tempfile.mkstemp(suffix='.png')[1] driver.get_screenshot_as_file(fn) time.sleep(5) heading = '{} Test'.format(resource) ver = driver.capabilities['version'] plat = driver.capabilities['platform'] text = 'Browser: {}\nVersion: {}\nPlatform: {}\nWait: {}\n' text = text.format(test.browser_name, ver, plat, t) self._results.add_section(heading, text, fn) driver.quit()
class TestWebTestResults(unittest.TestCase): """Test class.""" def setUp(self): """Set up the test.""" self.driver = webdriver.Firefox() self.test_results = WebTestResults() def test_web_test_results_build_report(self): """run a simple report.""" t = datetime.datetime.now() self.driver.get(TEST_DOMAIN) t = str(datetime.datetime.now() - t) fn = tempfile.mkstemp(suffix='.png')[1] self.driver.get_screenshot_as_file(fn) heading = "Firefox Google Test" ver = self.driver.capabilities['version'] plat = self.driver.capabilities['platform'] text = 'version: {}\nplatform: {}\nwait: {}\n'.format(ver, plat, t) self.test_results.add_section(heading, text, fn) fn = tempfile.mkstemp(suffix='.pdf')[1] self.test_results.write_to_file(fn) self.driver.quit()