def step(self, step_name):
@contextmanager<EOL>def step_context(step_name):<EOL><INDENT>if self.event_receiver.current_case is not None:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT>self.event_receiver.begin_case(step_name, self.now_seconds(), self.name)<EOL>try:<EOL><INDENT>yield self.event_receiver<EOL><DEDENT>except:<EOL><INDENT>etype, evalue, tb = sys.exc_info()<EOL>self.event_receiver.error('<STR_LIT>' % [etype, evalue, tb])<EOL>raise<EOL><DEDENT>finally:<EOL><INDENT>self.event_receiver.end_case(step_name, self.now_seconds())<EOL><DEDENT><DEDENT>return step_context(step_name)<EOL>
Start a new step. returns a context manager which allows you to
        report an error