Use conftest.py to define shared fixtures that provide WebDriver setup and teardown. Example patterns:
- Browser choice: Use pytest command line options to select browser (e.g., Chrome, Firefox).
- Environment variables: Store URLs and credentials in environment variables or config files, accessed in fixtures.
- Fixture scope: Use
scope="function" for fresh browser per test or scope="session" for reuse.
Example snippet in conftest.py:
import pytest
from selenium import webdriver
@pytest.fixture(scope="function")
def driver(request):
browser = request.config.getoption("browser") or "chrome"
if browser == "chrome":
driver = webdriver.Chrome()
elif browser == "firefox":
driver = webdriver.Firefox()
else:
raise ValueError(f"Unsupported browser: {browser}")
driver.maximize_window()
yield driver
driver.quit()
# Add pytest_addoption to accept --browser CLI argument
def pytest_addoption(parser):
parser.addoption(
"--browser",
action="store",
default="chrome",
help="Browser to run tests on: chrome or firefox"
)