def setUp(self): # Create mock dependencies self.mock_page_server = mock.MagicMock(SuitePageServer) self.mock_page_server.suite_url_list.return_value = [self.SUITE_URL] self.mock_webbrowser = mock.MagicMock(webbrowser) # Create the runner instance, and configure it to # exit immediately. self.runner = SuiteDevRunner(self.mock_page_server, webbrowser_module=self.mock_webbrowser, stop_fast=True)
class SuiteDevRunnerTest(TestCase): SUITE_URL = 'http://localhost:1234/suite/0' def setUp(self): # Create mock dependencies self.mock_page_server = mock.MagicMock(SuitePageServer) self.mock_page_server.suite_url_list.return_value = [self.SUITE_URL] self.mock_webbrowser = mock.MagicMock(webbrowser) # Create the runner instance, and configure it to # exit immediately. self.runner = SuiteDevRunner(self.mock_page_server, webbrowser_module=self.mock_webbrowser, stop_fast=True) def test_run(self): # Run the tests in dev mode self.runner.run() # Expect that the page server was started/stopped self.mock_page_server.start.assert_called_once_with() self.mock_page_server.stop.assert_called_once_with() # Expect that the webbrowser opened the suite URL self.mock_webbrowser.open_new.assert_called_once_with(self.SUITE_URL) def test_no_urls(self): # This should get caught by argument validation, but check anyway self.mock_page_server.suite_url_list.return_value = [] with self.assertRaises(ValueError): self.runner.run() def test_multiple_urls(self): # This should get caught by argument validation, but check anyway self.mock_page_server.suite_url_list.return_value = [self.SUITE_URL] * 5 # Run the tests in dev mode self.runner.run() # Expect that the webbrowser opened only the first URL self.mock_webbrowser.open_new.assert_called_once_with(self.SUITE_URL)