I am using Selenium Python with Pytest framework and using conftest.py file where I have written a class level fixture
These are the plugins used. I am using Pycharm editor
Conftest.py file
@pytest.fixture(scope="class")
def driverObjectClass1(request):
global driver
sys.path.insert(0, os.getcwd())
browser = option.browser
chromeOpts = chrome_options()
firefoxOpts = firefox_options()
if option.headless:
chromeOpts.add_argument("--headless")
firefoxOpts.add_argument("--headless")
if browser in 'firefox':
driver = webdriver.Firefox(options=firefoxOpts)
else:
driver = webdriver.Chrome(options=chromeOpts)
driver.maximize_window()
driver.implicitly_wait(20)
request.cls.driver = driver
config = load_config()
logFolder = log_Folder(config['clientID'])
yield request.cls.driver, config, logFolder
sleep(2)
request.cls.driver.quit()
My class test_login.py
import pytest
from selenium.webdriver.common.by import By
from Pages.page_common import Common
@pytest.mark.usefixtures("driverObjectClass1")
class TestLogin1:
def test_valid_login(self):
driver = self.driver
config = self.config
logFolder = self.logFolder
common = Common(driver)
try:
url = config['URL']
clientId = config['clientID']
username = config['username']
password = config['password']
app1 = config['app']
branch = config['branch']
print(clientId, username, password, app1, branch)
common.SCHXPLogin(url, clientId, username, password)
common.change_branch(branch)
except Exception as e:
common.logFailure("test_valid_login", logFolder, e)
getting this error/warning when applying the fixture like this. How to fetch the yield objects in the class where the fixture is applied?
How to resolve this issue?
When I run the test, I get the following error
FAILED test_cases/test_login1.py::TestLogin1::test_valid_login - AttributeError: 'TestLogin1' object has no attribute 'config'
I tried searching a solution but couldn’t find the answer. So I decided to ask here.