Example #1
0
    def test_merge_steps(self):
        """
            Test merging steps from feature files with registered steps
        """
        matcher = Matcher()
        steps = {
            re.compile(r"Given I have the number (\d+)"): "some_func",
            re.compile(r"I add (\d+) to my number"): "some_other_func"
        }

        feature = Feature(1, "Feature", "Some feature", "test.feature", 1)
        scenario = Scenario(1, "Scenario", "Adding numbers", "test.feature", 2,
                            feature)
        scenario.steps.append(
            Step(1, "Given I have the number 5", "test.feature", 3, scenario,
                 False))
        scenario.steps.append(
            Step(2, "When I add 2 to my number", "test.feature", 4, scenario,
                 False))
        feature.scenarios.append(scenario)

        matcher.merge_steps([feature], steps)

        scenario.steps[0].definition_func.should.be.equal("some_func")
        scenario.steps[0].arguments.should.be.equal(("5", ))
        scenario.steps[1].definition_func.should.be.equal("some_other_func")
        scenario.steps[1].arguments.should.be.equal(("2", ))
Example #2
0
    def test_merge_non_existing_step(self):
        """
            Test merging non existing step
        """
        matcher = Matcher()
        steps = {
            re.compile(r"Given I have the number (\d+)"): "some_func",
            re.compile(r"I add (\d+) to my number"): "some_other_func"
        }

        feature = Feature(1, "Feature", "Some feature", "test.feature", 1)
        scenario = Scenario(1, "Scenario", "Adding numbers", "test.feature", 2,
                            feature)
        scenario.steps.append(
            Step(1, "When I call a non-existing step", "test.feature", 3,
                 scenario, False))
        feature.scenarios.append(scenario)

        matcher.merge_steps.when.called_with([feature], steps).should.throw(
            StepDefinitionNotFoundError,
            "Cannot find step definition for step 'When I call a non-existing step' in test.feature:3"
        )
Example #3
0
    def test_match_steps(self):
        """
            Test matching steps from feature files with registered steps
        """
        matcher = Matcher()
        steps = {
            re.compile(r"Given I have the number (\d+)"): "some_func",
            re.compile(r"I add (\d+) to my number"): "some_other_func"
        }

        arguments, keyword_arguments, func = matcher.match(
            "Given I have the number 5", steps)
        arguments.should.be.equal(("5", ))
        keyword_arguments.should.be.equal({})
        func.should.be.equal("some_func")

        arguments, keyword_arguments, func = matcher.match(
            "When I add 2 to my number", steps)
        arguments.should.be.equal(("2", ))
        keyword_arguments.should.be.equal({})
        func.should.be.equal("some_other_func")

        match = matcher.match("when I call a non-existing step", steps)
        match.should.be.none