def test_story_runner_returns_a_result_with_the_original_Fixture(): mocker = Mocker() settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) runner = StoryRunner() context = Object() context.browser_driver = mocker.mock() context.browser_driver.start_test("http://localhost") context.browser_driver.stop_test() context.settings = mocker.mock() context.settings.on_before_action mocker.result(None) context.settings.on_action_successful mocker.result(None) context.language = mocker.mock() context.language.get('given') mocker.result('Given') context.language.get('when') mocker.result('When') context.language.get('then') mocker.result('Then') with mocker: result = runner.run_stories(settings, fixture, context=context) assert result.fixture == fixture
def test_should_handle_action_errors_successfully(): mocker = Mocker() def action_failed_method(context, *args, **kwargs): raise ActionFailedError("bla") settings = Settings() runner = StoryRunner() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.execute_function = action_failed_method context = Object() context.browser_driver = mocker.mock() context.browser_driver.start_test("http://localhost") context.browser_driver.stop_test() context.settings = mocker.mock() context.settings.on_before_action mocker.result(None) context.settings.on_action_error mocker.result(None) context.language = mocker.mock() context.language.get('given') mocker.result('Given') with mocker: result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert fixture.get_status() == Status.Failed
def test_should_catch_assertion_error(): mocker = Mocker() def action_failed_method(context, *args, **kwargs): assert False, "bla" settings = Settings() runner = StoryRunner() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.execute_function = action_failed_method context = Object() context.browser_driver = mocker.mock() context.browser_driver.start_test("http://localhost") context.browser_driver.stop_test() context.settings = mocker.mock() context.settings.on_before_action mocker.result(None) context.settings.on_action_error mocker.result(None) context.language = mocker.mock() context.language.get('given') mocker.result('Given') with mocker: result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert isinstance(action.error, AssertionError) assert action.error.message == "bla"
def test_should_execute_scenarios_successfully(): mocker = Mocker() settings = Settings() runner = StoryRunner() fixture = Fixture() fixture.append_story(some_action().scenario.story) context = Object() context.browser_driver = mocker.mock() context.browser_driver.start_test("http://localhost") context.browser_driver.stop_test() context.settings = mocker.mock() context.settings.on_before_action mocker.result(None) context.settings.on_action_successful mocker.result(None) context.language = mocker.mock() context.language.get('given') mocker.result('Given') context.language.get('when') mocker.result('When') context.language.get('then') mocker.result('Then') with mocker: result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert fixture.get_status() == Status.Successful
def make_context_and_fso_mocks(mocker): hooks_dir = ["/hooks/dir/"] pages_dir = ["/pages/dir/"] custom_actions_dir = ["/custom/actions/dir/"] context_mock = Object() context_mock.browser_driver = mocker.mock() context_mock.settings = mocker.mock() context_mock.settings.hooks_dir mocker.count(min=1, max=None) mocker.result(hooks_dir) context_mock.settings.pages_dir mocker.count(min=1, max=None) mocker.result(pages_dir) context_mock.settings.custom_actions_dir mocker.count(min=1, max=None) mocker.result(custom_actions_dir) context_mock.settings.base_url mocker.count(min=0, max=None) mocker.result("http://localhost") context_mock.settings.default_culture mocker.count(min=1, max=None) mocker.result("en-us") files = ["/some/weird/file.py"] fso_mock = mocker.mock() fso_mock.add_to_import(hooks_dir[0]) fso_mock.add_to_import(pages_dir[0]) fso_mock.add_to_import(custom_actions_dir[0]) fso_mock.locate(hooks_dir[0], '*.py') mocker.result(files) fso_mock.locate(pages_dir[0], '*.py') mocker.result(files) fso_mock.locate(custom_actions_dir[0], '*.py') mocker.result(files) fso_mock.import_file(ANY) mocker.count(min=1, max=None) fso_mock.remove_from_import(custom_actions_dir[0]) mocker.count(min=1, max=None) fso_mock.remove_from_import(pages_dir[0]) mocker.count(min=1, max=None) fso_mock.remove_from_import(hooks_dir[0]) mocker.count(min=1, max=None) return context_mock, fso_mock