예제 #1
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_shuffle_scenarios_in_a_rule_if_shuffle_scenarios_flag_set(
        hook_registry, default_config, mocker):
    """
    The Runner should shuffle the Scenarios within a Rule before
    running them if the shuffle Scenarios flag is set
    """
    # given
    default_config.shuffle_scenarios = True

    runner = Runner(default_config, None, hook_registry)
    runner.run_scenario = mocker.MagicMock()

    rule_mock = mocker.MagicMock(name="Rule")
    scenario = mocker.MagicMock(name="Scenario")
    rule_mock.scenarios = [scenario]

    mocker.patch("random.sample")

    # when
    runner.run_rule(rule_mock)

    # then
    import random

    random.sample.assert_called_once_with(rule_mock.scenarios,
                                          len(rule_mock.scenarios))
예제 #2
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_call_hooks_when_running_a_rule(hook_registry,
                                                      default_config, mocker):
    """The Runner should call the ``each_rule`` hooks when running a Rule"""
    # given
    runner = Runner(default_config, None, hook_registry)
    rule_mock = mocker.MagicMock(name="Rule")

    # when
    runner.run_rule(rule_mock)

    # then
    hook_registry.call.assert_has_calls([
        call("each_rule", "before", False, rule_mock),
        call("each_rule", "after", False, rule_mock),
    ])
예제 #3
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_run_scenario_loop_and_outline_as_scenario_container(
        scenario_container_type, hook_registry, default_config, mocker):
    """The Runner should run a ScenarioLoop and ScenarioOutline as a Scenario Container"""
    # given
    runner = Runner(default_config, None, hook_registry)
    runner.run_scenario_container = mocker.MagicMock()

    rule_mock = mocker.MagicMock(name="Rule")
    scenario = mocker.MagicMock(name=scenario_container_type.__name__,
                                spec=scenario_container_type)
    rule_mock.scenarios = [scenario]

    # when
    runner.run_rule(rule_mock)

    # then
    runner.run_scenario_container.assert_has_calls([call(scenario)])
예제 #4
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_iterate_all_scenarios_when_running_a_rule(
        hook_registry, default_config, mocker):
    """The Runner should iterate all Scenarios when running a Rule"""
    # given
    runner = Runner(default_config, None, hook_registry)
    runner.run_scenario = mocker.MagicMock()

    rule_mock = mocker.MagicMock(name="Rule")
    first_scenario = mocker.MagicMock(name="First Scenario")
    second_scenario = mocker.MagicMock(name="Second Scenario")
    rule_mock.scenarios = [first_scenario, second_scenario]

    # when
    runner.run_rule(rule_mock)

    # then
    runner.run_scenario.assert_has_calls(
        [call(first_scenario), call(second_scenario)])
예제 #5
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_only_run_scenario_which_need_to_be_run(
        hook_registry, default_config, mocker):
    """The Runner should only run Scenarios which need to be run"""
    # given
    runner = Runner(default_config, None, hook_registry)
    runner.run_scenario = mocker.MagicMock()

    rule_mock = mocker.MagicMock(name="Rule")
    first_scenario = mocker.MagicMock(name="First Scenario")
    first_scenario.has_to_run.return_value = True
    second_scenario = mocker.MagicMock(name="Second Scenario")
    second_scenario.has_to_run.return_value = False
    third_scenario = mocker.MagicMock(name="Third Scenario")
    third_scenario.has_to_run.return_value = True
    rule_mock.scenarios = [first_scenario, second_scenario, third_scenario]

    # when
    runner.run_rule(rule_mock)

    # then
    runner.run_scenario.assert_has_calls(
        [call(first_scenario), call(third_scenario)])
예제 #6
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_exit_for_failed_scenario_if_early_exit_flag_is_set(
        hook_registry, default_config, mocker):
    """The Runner should exit for a failed Scenario if the early exit flag is set"""
    # given
    default_config.early_exit = True

    runner = Runner(default_config, None, hook_registry)
    runner.run_scenario = mocker.MagicMock()
    runner.run_scenario.side_effect = [
        State.PASSED, State.FAILED, State.PASSED
    ]

    rule_mock = mocker.MagicMock(name="Rule")
    first_scenario = mocker.MagicMock(name="First Scenario")
    second_scenario = mocker.MagicMock(name="Second Scenario")
    third_scenario = mocker.MagicMock(name="Third Scenario")
    rule_mock.scenarios = [first_scenario, second_scenario, third_scenario]

    # when
    runner.run_rule(rule_mock)

    # then
    runner.run_scenario.assert_has_calls(
        [call(first_scenario), call(second_scenario)])
예제 #7
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_run_each_rule_in_a_feature(hook_registry,
                                                  default_config, mocker):
    """The Runner should run each Rule from a Feature"""
    # given
    runner = Runner(default_config, None, hook_registry)
    feature_mock = mocker.MagicMock(name="Feature")
    first_rule = mocker.MagicMock(name="First Rule")
    second_rule = mocker.MagicMock(name="Second Rule")
    feature_mock.rules = [first_rule, second_rule]
    runner.run_rule = mocker.MagicMock()

    # when
    runner.run_feature(feature_mock)

    # then
    runner.run_rule.assert_has_calls([call(first_rule), call(second_rule)])
예제 #8
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_exit_for_failed_rule_if_early_exit_flag_is_set(
        hook_registry, default_config, mocker):
    """The Runner should exit for a failed Rule if the early exit flag is set"""
    # given
    default_config.early_exit = True

    runner = Runner(default_config, None, hook_registry)
    runner.run_rule = mocker.MagicMock()
    runner.run_rule.side_effect = [State.PASSED, State.FAILED, State.PASSED]

    feature_mock = mocker.MagicMock(name="Feature")
    first_rule = mocker.MagicMock(name="First Rule")
    second_rule = mocker.MagicMock(name="Second Rule")
    third_rule = mocker.MagicMock(name="Third Rule")
    feature_mock.rules = [first_rule, second_rule, third_rule]

    # when
    runner.run_feature(feature_mock)

    # then
    runner.run_rule.assert_has_calls([call(first_rule), call(second_rule)])
예제 #9
0
파일: test_runner.py 프로젝트: nokia/radish
def test_runner_should_only_run_rule_which_need_to_be_run(
        hook_registry, default_config, mocker):
    """The Runner should run only the Rules which need to be run"""
    # given
    runner = Runner(default_config, None, hook_registry)
    runner.run_rule = mocker.MagicMock()

    feature_mock = mocker.MagicMock(name="Feature")
    first_rule = mocker.MagicMock(name="First Rule")
    first_rule.has_to_run.return_value = True
    second_rule = mocker.MagicMock(name="Second Rule")
    second_rule.has_to_run.return_value = False
    third_rule = mocker.MagicMock(name="Third Rule")
    third_rule.has_to_run.return_value = True
    feature_mock.rules = [first_rule, second_rule, third_rule]

    # when
    runner.run_feature(feature_mock)

    # then
    runner.run_rule.assert_has_calls([call(first_rule), call(third_rule)])