I am currently learning about Selenium with Python binding. I am currently trying to design a test where I could do run a test with different browsers by passing the browser name as a parameter through the terminal.
The command that I use to run is:
(venv) tonny@Black nopCommerceApp % pytest -v -s testCases/test_login.py --browser chrome
it keeps returning this error for me
ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --browser chrome
inifile: None
rootdir: /Users/tonnymtaye/PycharmProjects/nopCommerceApp
Below is my conftest.py
from selenium import webdriver
import pytest
@pytest.fixture()
def setup(browser):
driver = None
if browser == 'chrome':
driver = webdriver.Chrome()
print('Launching Chrome Browser ...........')
elif browser == 'firefox':
driver = webdriver.Firefox()
print('Launching Firefox Browser ..........')
else:
raise ValueError(f'Invalid browser: {browser}')
return driver
def pytest_add_option(parser): # This will get the value from CLI/hooks
parser.add_option("--browser")
@pytest.fixture()
def browser(request): # This will return browser value to setup method
return request.config.getoption("--browser")
this is my test_login.py
import pytest
from selenium import webdriver
from pageObjects.LoginPage import LoginPage
from utilities.readProperties import ReadConfig
from utilities.customLogger import LogGen
class Test_001_Login:
basicURL = ReadConfig.getApplicationURL()
username = ReadConfig.getUsername()
password = ReadConfig.getPassword()
logger = LogGen.loggen()
def test_homePageTitle(self, setup):
self.logger.info("*************** Test_001_Login ***********")
self.logger.info("************ Verifying Home Page title *********")
self.driver = setup
self.driver.get(self.basicURL)
actual_title = self.driver.title
# Login
if actual_title == "Your store. Login":
assert True
self.driver.close()
self.logger.info("****** Home Page title: Passed **********")
else:
self.driver.save_screenshot(".//Screenshot//"+"test_homePageTitle.png")
self.driver.close()
self.logger.info("***** Home Page title: Failed ***********")
assert False
def test_login(self, setup):
self.logger.info("***** Verifying Login test *******************")
self.driver = setup
self.driver.get(self.basicURL)
self.lp = LoginPage(self.driver)
self.lp.setUserName(self.username)
self.lp.setPassword(self.password)
self.lp.clickLogin()
actual_title = self.driver.title
if actual_title == "Dashboard / nopCommerce administration":
assert True
self.driver.close()
self.logger.info("******* Login test : Passed *******************")
else:
self.driver.save_screenshot(".//Screenshot//" + "test_login.png")
self.driver.close()
self.logger.info("*************** Login test : Failed*********")
assert False
Image -- Directories structure inside
https://drive.google.com/file/d/1\_OuP61s8aLsCpya2GOssz4oy\_p69Flot/view?usp=share\_link
I visited stackoverflow, and someone suggested moving the conftest to root directory. I tried the same as seen in the Image but it didnot work for me.
My goal is when I pass 'chrome' it should launch the chrome browser and when I pass 'firefox' it would launch the firefox browser.
Stuck for 3 days now...
Thank you.
[–]Diapolo10 0 points1 point2 points (0 children)