From f1ba44ca3e69e2e31ffa92ebd83b07e11a37fd3b Mon Sep 17 00:00:00 2001 From: Sourcery AI <> Date: Sun, 12 Nov 2023 22:20:15 +0000 Subject: [PATCH] 'Refactored by Sourcery' --- src/pytest_bdd/cucumber_json.py | 2 +- src/pytest_bdd/generation.py | 3 +-- src/pytest_bdd/gherkin_terminal_reporter.py | 2 +- src/pytest_bdd/parser.py | 5 ++--- src/pytest_bdd/scenario.py | 13 +++++-------- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/pytest_bdd/cucumber_json.py b/src/pytest_bdd/cucumber_json.py index 3718faa..60a3e84 100644 --- a/src/pytest_bdd/cucumber_json.py +++ b/src/pytest_bdd/cucumber_json.py @@ -64,7 +64,7 @@ class LogBDDCucumberJSON: result: dict[str, Any] = {} if report.passed or not step["failed"]: # ignore setup/teardown result = {"status": "passed"} - elif report.failed and step["failed"]: + elif report.failed: result = {"status": "failed", "error_message": str(report.longrepr) if error_message else ""} elif report.skipped: result = {"status": "skipped"} diff --git a/src/pytest_bdd/generation.py b/src/pytest_bdd/generation.py index 457c92c..a4c96a5 100644 --- a/src/pytest_bdd/generation.py +++ b/src/pytest_bdd/generation.py @@ -179,8 +179,7 @@ def _show_missing_code_main(config: Config, session: Session) -> None: features, scenarios, steps = parse_feature_files(config.option.features) for item in session.items: - scenario = getattr(item.obj, "__scenario__", None) - if scenario: + if scenario := getattr(item.obj, "__scenario__", None): if scenario in scenarios: scenarios.remove(scenario) for step in scenario.steps: diff --git a/src/pytest_bdd/gherkin_terminal_reporter.py b/src/pytest_bdd/gherkin_terminal_reporter.py index 9c4ef65..b26a8a7 100644 --- a/src/pytest_bdd/gherkin_terminal_reporter.py +++ b/src/pytest_bdd/gherkin_terminal_reporter.py @@ -90,7 +90,7 @@ class GherkinTerminalReporter(TerminalReporter): self._tw.write("\n") for step in report.scenario["steps"]: self._tw.write(f" {step['keyword']} {step['name']}\n", **scenario_markup) - self._tw.write(" " + word, **word_markup) + self._tw.write(f" {word}", **word_markup) self._tw.write("\n\n") self.stats.setdefault(cat, []).append(rep) diff --git a/src/pytest_bdd/parser.py b/src/pytest_bdd/parser.py index e49f847..ccdaec7 100644 --- a/src/pytest_bdd/parser.py +++ b/src/pytest_bdd/parser.py @@ -65,8 +65,7 @@ def strip_comments(line: str) -> str: :return: Stripped line. """ - res = COMMENT_RE.search(line) - if res: + if res := COMMENT_RE.search(line): line = line[: res.start()] return line.strip() @@ -189,7 +188,7 @@ def parse_feature(basedir: str, filename: str, encoding: str = "utf-8") -> Featu scenario.examples.set_param_names([l for l in split_line(parsed_line) if l]) mode = types.EXAMPLE_LINE elif mode == types.EXAMPLE_LINE: - scenario.examples.add_example([l for l in split_line(stripped_line)]) + scenario.examples.add_example(list(split_line(stripped_line))) elif mode and mode not in (types.FEATURE, types.TAG): step = Step(name=parsed_line, type=mode, indent=line_indent, line_number=line_number, keyword=keyword) if feature.background and not scenario: diff --git a/src/pytest_bdd/scenario.py b/src/pytest_bdd/scenario.py index df7c029..8160097 100644 --- a/src/pytest_bdd/scenario.py +++ b/src/pytest_bdd/scenario.py @@ -46,7 +46,7 @@ def find_fixturedefs_for_step(step: Step, fixturemanager: FixtureManager, nodeid """Find the fixture defs that can parse a step.""" # happens to be that _arg2fixturedefs is changed during the iteration so we use a copy fixture_def_by_name = list(fixturemanager._arg2fixturedefs.items()) - for i, (fixturename, fixturedefs) in enumerate(fixture_def_by_name): + for fixturename, fixturedefs in fixture_def_by_name: for pos, fixturedef in enumerate(fixturedefs): step_func_context = getattr(fixturedef.func, "_pytest_bdd_step_context", None) if step_func_context is None: @@ -244,14 +244,11 @@ def _get_scenario_decorator( def collect_example_parametrizations( templated_scenario: ScenarioTemplate, ) -> list[ParameterSet] | None: - # We need to evaluate these iterators and store them as lists, otherwise - # we won't be able to do the cartesian product later (the second iterator will be consumed) - contexts = list(templated_scenario.examples.as_contexts()) - if not contexts: + if contexts := list(templated_scenario.examples.as_contexts()): + return [pytest.param(context, id="-".join(context.values())) for context in contexts] + else: return None - return [pytest.param(context, id="-".join(context.values())) for context in contexts] - def scenario( feature_name: str, scenario_name: str, encoding: str = "utf-8", features_base_dir=None @@ -263,7 +260,7 @@ def scenario( :param str encoding: Feature file encoding. """ __tracebackhide__ = True - scenario_name = str(scenario_name) + scenario_name = scenario_name caller_module_path = get_caller_module_path() # Get the feature