Example #1
0
    def __iter__(self):
        EVENT('scenario_outline', self)
        
        for ex in self.examples:
            EVENT('examples', ex)
            
            pattern = re.compile(r'<(%s)>' % '|'.join(ex.table.columns))
            self.current_columns = ex.table.columns
            self.current_widths = ex.table.widths
           
            for values in ex.table.rows:
                self.current_row = values
                # Substitute outline parameters.
                for step in self.steps:
                    step.name, used = subst_params(step.name_template, pattern, values)
                    if step.multi is not None:
                        if type(step.multi) == types.StringType:
                            # PyString
                            step.multi, used_in_multi = subst_params(step.multi_template, pattern, values)
                        else:
                            # Table
                            used_in_multi = step.multi.subst(pattern, values)
                        used |= used_in_multi
                    step.full_reset()
                    step.used_parameters = used
                Scenario.reset(self)
                yield self

        self.status = 'done'
        self.exception = None
        self.tb = None
        
        EVENT('scenario_outline', self)
Example #2
0
 def subst(self, pattern, values):
     """Substitue values into header and cells."""
     raw = []
     used = set()
     
     for row in self.raw:
         raw.append(
             reduce(
                 lambda x, y: x[0].append(y[0]) or x[1].update(y[1]) or x, 
                 (subst_params(f, pattern, values) for f in row), 
                 ([], used)
             )[0]
         )
     self.rebuild(raw)
     
     return used