def parse_examples(self, json_element): """ e = { 'keyword': examples.keyword, 'name': examples.name, 'location': examples.location, } if examples.table: e['table'] = self.make_table(examples.table) element = self.current_feature_element element['examples'].append(e) """ keyword = json_element.get("keyword", u"") name = json_element.get("name", u"") location = json_element.get("location", u"") table = None json_table = json_element.get("table", None) if json_table: table = self.parse_table(json_table) filename, line = location.split(":") examples = model.Examples(filename, line, keyword, name, table) return examples
def action_steps(self, line): stripped = line.lstrip() if stripped.startswith('"""') or stripped.startswith("'''"): self.state = 'multiline' self.multiline_start = self.line self.multiline_terminator = stripped[:3] self.multiline_leading = line.index(stripped[0]) return True line = line.strip() step = self.parse_step(line) if step: self.statement.steps.append(step) return True if line.startswith('@'): self.tags.extend([model.Tag(tag.strip(), self.line) for tag in line[1:].split('@')]) return True scenario_kwd = self.match_keyword('scenario', line) if scenario_kwd: name = line[len(scenario_kwd) + 1:].strip() self.statement = model.Scenario(self.filename, self.line, scenario_kwd, name, tags=self.tags) self.tags = [] self.feature.add_scenario(self.statement) return True scenario_outline_kwd = self.match_keyword('scenario_outline', line) if scenario_outline_kwd: name = line[len(scenario_outline_kwd) + 1:].strip() self.statement = model.ScenarioOutline(self.filename, self.line, scenario_outline_kwd, name, tags=self.tags) self.tags = [] self.feature.add_scenario(self.statement) self.state = 'steps' return True examples_kwd = self.match_keyword('examples', line) if examples_kwd: if not isinstance(self.statement, model.ScenarioOutline): message = 'Examples must only appear inside scenario outline' raise ParserError(message, self.line) name = line[len(examples_kwd) + 1:].strip() self.examples = model.Examples(self.filename, self.line, examples_kwd, name) self.statement.examples.append(self.examples) self.state = 'table' return True if line.startswith('|'): self.state = 'table' return self.action_table(line) return False
def _build_examples(self, keyword, line): if not isinstance(self.statement, model.ScenarioOutline): message = 'Examples must only appear inside scenario outline' raise ParserError(message, self.line, self.filename, line) name = line[len(keyword) + 1:].strip() self.examples = model.Examples(self.filename, self.line, keyword, name) # pylint: disable=E1103 # E1103 Instance of 'Background' has no 'examples' member # (but some types could not be inferred). self.statement.examples.append(self.examples)
def _build_examples_from_file(self, keyword, line): fn = line[len(keyword) + 1:].strip() with open(fn) as f: payload = json.load(f) headings = payload.get("headings", []) rows = payload.get("rows", []) table = model.Table(headings, rows=rows) self.examples = model.Examples(self.filename, self.line, keyword, name=fn, tags=self.tags) self.examples.table = table self.statement.examples.append(self.examples) self.tags = []