Closed Enigmaderockz closed 7 months ago
You have to use the target_fixture=“conf” parameter. Che the migration guide to pytest-bed v7 in the readme of the project.
yes I have used that but again stuck with parametrization of conf and id values from all the test cases. I am able to hardcode one specific conf and id value in conf and id fixtures.
Feature: load
Background:
Given config file <conf> for product "ETMARGIN" and TestCaseld <id>
@tc
Scenario Outline: tc1
Then data between source file and table should match
Examples:
| conf | id |
|abc.cfg |load1 |
|def.cfg |load3 |
@tc
Scenario Outline: tc1
Then data between source file and table should match
Examples:
| conf | id |
|xyz.cfg |load2 |
This is test case file sample: test_abc.py
from pytest bad import scenarios, given, when, then, parsers
import pytest
import os
scenarios("./feature/")
def check():
print("passed")
@pytest.fixture
def conf():
return 'abc.cfg'
@pytest.fixture
def id():
return 'load1'
@given(parsers.parse('config file <conf> for product "(product)" and TestCaseld <id>'))
def job_details(conf, product, id):
print(conf + product + id)
I think I can not do it or is there any other way because this is what I got to know from documentation:
(https://pytest-bdd.readthedocs.io/en/stable/#refuse-combining-scenario-outline-and-pytest-parametrization) The significant downside of combining scenario outline and pytest parametrization approach was an inability to see the test table from the feature file.
Sorry, I don’t understand what you’re trying to do here
@youtux - Sorry for late reply. What I am trying to do here is I am trying to pass the parameter values from scenario outline examples to the given statement in test case in test_abc.py.
What I showed you in above comment is I am able to pass abc.cfg and load1 to the given statement by hardcoding it in test_abc.py using conf and id fixtures but how should I pass other scenario outline examples like def.cfg & load3, xyz.cfg and load2 in feature file to the given statement in test_abc.py?
Isn't there any way to parameterize these scenario outline examples in test_abc.py so that
I am able to achieve using pytest-bdd 4.1.0 and python 3.10.10 but unable to do so in upgraded versions.
If you can help, then that would be really great. I couldn't find any solution of this anywhere not even using AI tools.
Have you tried:
@dataclass
class JobDetails:
conf: str
product: str
id: str
@given(parsers.parse('config file <conf> for product "(product)" and TestCaseld <id>'), target_fixture=“job_details”)
def _(conf, product, id):
return JobDetails(conf, product, id)
then in your given/when/then steps you can use the job_details
fixture
I was using python 3.10.10 version and pytest-bdd version 4.1.0, below test case execution was working absolutely fine but when I upgraded from python 3.10.10 to 3.11.1 and pytest-bdd version to 7.0.0 then I am getting below error
error:
This is feature file sample abc.feature
This is test case file sample: test_abc.py