CLI parameters

initialize add option in conftest.py

def pytest_addoption(parser):
    parser.addoption(
        "--cmdopt", action="store", default="type1", help="my option: type1 or type2"
    )

Example: we’re going to add an option --browser that takes in either Chrome, Firefox, Edge or any other browser and run the test in that particular browser.

project structure looks like this

addOptionDemo/
--conftest.py
--test_demo.py

conftest.py

import pytest
from selenium import webdriver

# pytest addoption function
def pytest_addoption(parser):
    parser.addoption(
        "--browser", action="store", default="Chrome", help="Choose a browser: Chrome, Firefox"
    )


@pytest.fixture(scope="function")
def driver(request):
    browser_name = request.config.getoption("browser")
    if browser_name == "Chrome":
        driver = webdriver.Chrome()
    elif browser_name == 'Firefox':
        driver = webdriver.Firefox()

    driver.maximize_window()
    driver.implicitly_wait(3)
    yield driver
    driver.quit()

test_demo.py

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()
driver.implicitly_wait(5)

# a demo function that goes to a site, enters first and last name, waits for 3 seconds and quits.
def test_demo(driver):
    driver.get("https://demo.automationtesting.in/Register.html")

    first_name = driver.find_element(By.XPATH, '//input[@placeholder="First Name"]')
    last_name = driver.find_element(By.XPATH, '//input[@placeholder="Last Name"]')

    first_name.send_keys("John")
    last_name.send_keys("Doe")
    time.sleep(3)
    driver.quit()

now we can run the test like this

pytest test_register.py --browser Firefox

and we’ll be able to run the test case on either Firefox or Chrome.

Updated on