'Runs a step, trying to resolve it on available step
definitions'

def run(self, ignore_case):

    (matched, step_definition) = self.pre_run(ignore_case)
    self.ran = True
    kw = matched.groupdict()
    if kw:
        step_definition(**kw)
    else:
        groups = matched.groups()
        step_definition(*groups)
    self.passed = True
    return True
