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_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_see_summary_for_fixture_returns_proper_string_for_failed_tests(): mocker = Mocker() expected = """================ Test Run Summary ================ Status: FAILED Test Data Stats --------------- Successful Stories......0/1 (0.00%) Failed Stories..........1/1 (100.00%) Successful Scenarios....0/1 (0.00%) Failed Scenarios........1/1 (100.00%)""" template_loader_mock = mocker.mock() template_loader_mock.load("summary") mocker.result(summary_template) with mocker: settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.mark_as_failed() result = Result(fixture=fixture, template_loader=template_loader_mock) summary = result.summary_for(settings.default_culture) assert summary == expected
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_append_story_keeps_data(): fixture = Fixture() story = Story("some", "other", "data", identity="Some File") fixture.append_story(story) assert fixture.stories[0].as_a == "some" assert fixture.stories[0].i_want_to == "other" assert fixture.stories[0].so_that == "data"
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 test_see_summary_for_fixture_returns_proper_string(): expected = """================ Test Run Summary ================ Status: SUCCESSFUL Test Data Stats --------------- Successful Stories......1/1 (100.00%) Failed Stories..........0/1 (0.00%) Successful Scenarios....1/1 (100.00%) Failed Scenarios........0/1 (0.00%)""" template_loader_mock = Mock() template_loader_mock.expects(once()) \ .load(eq("summary")) \ .will(return_value(summary_template)) settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.mark_as_successful() result = Result(fixture=fixture, template_loader=template_loader_mock) summary = result.summary_for(settings.default_culture) assert summary == expected
def test_story_runner_returns_a_result_with_the_original_Fixture(): settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) runner = StoryRunner() context = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() context.settings = Mock() context.settings.on_before_action = None context.settings.on_action_successful = None context.settings.on_action_error = None context.language = Mock() context.language \ .expects(once()) \ .get(eq('given')) \ .will(return_value('Given')) context.language \ .expects(once()) \ .get(eq('when')) \ .will(return_value('When')) context.language \ .expects(once()) \ .get(eq('then')) \ .will(return_value('Then')) result = runner.run_stories(settings, fixture, context=context) assert result.fixture == fixture context.verify() context.browser_driver.verify()
def test_should_execute_scenarios_successfully(): settings = Settings() runner = StoryRunner() fixture = Fixture() fixture.append_story(some_action().scenario.story) context = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() context.settings = Mock() context.settings.on_before_action = None context.settings.on_action_successful = None context.settings.on_action_error = None context.language = Mock() context.language \ .expects(once()) \ .get(eq('given')) \ .will(return_value('Given')) context.language \ .expects(once()) \ .get(eq('when')) \ .will(return_value('When')) context.language \ .expects(once()) \ .get(eq('then')) \ .will(return_value('Then')) result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert fixture.get_status() == Status.Successful context.verify() context.browser_driver.verify()
def test_fixture_returns_proper_status_if_action_succeeded(): fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.mark_as_successful() assert fixture.get_status() == Status.Successful
def test_fixture_returns_total_successful_scenarios(): fixture = Fixture() action = some_action() other_action = some_action() fixture.append_story(action.scenario.story) fixture.append_story(other_action.scenario.story) action.mark_as_successful() other_action.mark_as_successful() assert fixture.count_successful_scenarios() == 2
def test_fixture_returns_failed_scenarios(): fixture = Fixture() action = some_action() other_action = some_action() fixture.append_story(action.scenario.story) fixture.append_story(other_action.scenario.story) action.mark_as_failed() other_action.mark_as_failed() assert len(fixture.get_failed_scenarios()) == 2
def test_fixture_returns_proper_status_with_two_scenarios_with_both_successful(): fixture = Fixture() action = some_action() other_action = some_action() fixture.append_story(action.scenario.story) fixture.append_story(other_action.scenario.story) action.mark_as_successful() other_action.mark_as_successful() assert fixture.get_status() == Status.Successful
def test_see_summary_for_fixture(): template_loader_mock = Mock() template_loader_mock.expects(once()) \ .load(eq("summary")) \ .will(return_value(summary_template)) settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.mark_as_successful() result = Result(fixture=fixture, template_loader=template_loader_mock) summary = result.summary_for(settings.default_culture) assert summary is not None
def test_should_execute_scenarios_successfully(): settings = Settings() runner = StoryRunner() fixture = Fixture() fixture.append_story(some_action().scenario.story) context = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert fixture.get_status() == Status.Successful context.verify() context.browser_driver.verify()
def test_story_runner_returns_a_result_with_the_original_Fixture(): settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) runner = StoryRunner() context = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() result = runner.run_stories(settings, fixture, context=context) assert result.fixture == fixture context.verify() context.browser_driver.verify()
def test_see_summary_for_fixture_returns_proper_failed_scenarios_string(): mocker = Mocker() expected = """================ Test Run Summary ================ Status: FAILED Test Data Stats --------------- Successful Stories......0/1 (0.00%) Failed Stories..........1/1 (100.00%) Successful Scenarios....0/1 (0.00%) Failed Scenarios........1/1 (100.00%) Failed Stories / Scenarios -------------------------- Story..........As a Someone I want to Do Something So that I'm Happy Story file.....To be implemented. Scenario.......1 - Something Given I did something - UNKNOWN When I do something - UNKNOWN Then Something happens - FAILED - Something very bad happened """ template_loader_mock = mocker.mock() template_loader_mock.load("summary") mocker.result(summary_template + summary_template_failed_stories) with mocker: settings = Settings() fixture = Fixture() result = Result(fixture=fixture, template_loader=template_loader_mock) action = complete_scenario_with_then_action_returned() fixture.append_story(action.scenario.story) action.mark_as_failed("Something very bad happened") summary = result.summary_for(settings.default_culture) assert summary.strip() == expected.strip()
def test_see_summary_for_fixture(): mocker = Mocker() template_loader_mock = mocker.mock() template_loader_mock.load("summary") mocker.result(summary_template) with mocker: settings = Settings() fixture = Fixture() action = some_action() fixture.append_story(action.scenario.story) action.mark_as_successful() result = Result(fixture=fixture, template_loader=template_loader_mock) summary = result.summary_for(settings.default_culture) assert summary is not None
def test_should_handle_action_errors_successfully(): 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 = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert fixture.get_status() == Status.Failed context.verify() context.browser_driver.verify()
def get_stories(self, settings): if not self.language: self.language = LanguageGetter(settings.default_culture) fixture = Fixture() story_file_list = self.file_object.list_files(directories=settings.tests_dirs, pattern=settings.file_pattern) story_file_list.sort() for story_file_path in story_file_list: try: parsed, error, story = self.parse_story_file(story_file_path, settings) if parsed: fixture.append_story(story) else: fixture.append_no_story_header(story_file_path) except IOError, err: fixture.append_invalid_test_file(story_file_path, err) except InvalidScenarioError, verr: fixture.append_no_story_header(story_file_path)
def test_see_summary_for_fixture_returns_proper_failed_scenarios_string(): expected = u"""================ Test Run Summary ================ Status: FAILED Test Data Stats --------------- Successful Stories......0 of 1 (0.00%) Successful Scenarios....0 of 1 (0.00%) Failed Stories..........1 of 1 (100.00%) Failed Scenarios........1 of 1 (100.00%) Total timing: 0.00 secs Scenarios/Minute: 0 scenarios per minute Failed Stories / Scenarios -------------------------- Story..........As a Someone I want to Do Something So that I'm Happy Story file.....some file Scenario.......1 - Something Given I did something - UNKNOWN When I do something - UNKNOWN Then Something happens - FAILED - Something very bad happened """ settings = Settings() fixture = Fixture() result = Result(fixture=fixture) action = complete_scenario_with_then_action_returned() fixture.append_story(action.scenario.story) action.mark_as_failed("Something very bad happened") summary = re.sub(r'[$][{][^}]+[}]', '', result.summary_for("en-us")) assert summary.strip() == expected.strip(), compare( summary.strip(), expected.strip())
def test_see_summary_for_fixture_returns_proper_failed_scenarios_string(): expected = u"""================ Test Run Summary ================ Status: FAILED Test Data Stats --------------- Successful Stories......0 of 1 (0.00%) Successful Scenarios....0 of 1 (0.00%) Failed Stories..........1 of 1 (100.00%) Failed Scenarios........1 of 1 (100.00%) Total timing: 0.00 secs Scenarios/Minute: 0 scenarios per minute Failed Stories / Scenarios -------------------------- Story..........As a Someone I want to Do Something So that I'm Happy Story file.....some file Scenario.......1 - Something Given I did something - UNKNOWN When I do something - UNKNOWN Then Something happens - FAILED - Something very bad happened """ settings = Settings() fixture = Fixture() result = Result(fixture=fixture) action = complete_scenario_with_then_action_returned() fixture.append_story(action.scenario.story) action.mark_as_failed("Something very bad happened") summary = re.sub(r'[$][{][^}]+[}]', '', result.summary_for("en-us")) assert summary.strip() == expected.strip(), compare(summary.strip(), expected.strip())
def test_should_record_errors_correctly(): 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 = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert isinstance(action.error, ActionFailedError) assert action.error.message == "bla" context.verify() context.browser_driver.verify()
def test_should_record_errors_correctly(): 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 = Mock() context.browser_driver = Mock() context.browser_driver.expects(once()).start_test(eq("http://localhost")) context.browser_driver.expects(once()).stop_test() context.settings = Mock() context.settings.on_before_action = None context.settings.on_action_successful = None context.settings.on_action_error = None context.language = Mock() context.language \ .expects(once()) \ .get(eq('given')) \ .will(return_value('Given')) context.language \ .expects(once()) \ .get(eq('when')) \ .will(return_value('When')) context.language \ .expects(once()) \ .get(eq('then')) \ .will(return_value('Then')) result = runner.run_stories(settings=settings, fixture=fixture, context=context) assert isinstance(action.error, ActionFailedError) assert action.error.message == "bla" context.verify() context.browser_driver.verify()
def test_append_story(): fixture = Fixture() story = Story("some", "other", "data", identity="Some File") fixture.append_story(story) assert len(fixture.stories) == 1