How To Set Environment Variables In Pytest

Define Env Vars In The Test (Basic)

The most basic and straightforward way is to define the environment variables in your test file or within the test itself.

tests/test_env_vars.py

While easy to understand, this method is

  • Ugly

  • Not scalable (imagine you had 100s of env variables)

  • Not reusable (imagine you had 100s of tests).

Use The python-dotenv or pytest-dotenv Package (Better)

The python-dotenv package is a popular way to define environment variables in a .env file and load them into your code.

tests/.env

DEPLOYMENT_STAGE=dev
API_ENDPOINT=https://api.dev.example.com
ACCOUNT_ID=987654321

Use The pytest-env Package (Best)

The pytest-env package is a great way to define Environment Variables within your pytest.ini or pyproject.toml config file.

tests/pytest.ini

[pytest]
env =
	DEPLOYMENT_STAGE=staging
	API_ENDPOINT=https://api.staging.example.com
	ACCOUNT_ID=56789

Instead of pytest.ini, you can also define these in a pyproject.toml file.

[tool.pytest.ini_options]
env = [
    "HOME=~/tmp",
    "RUN_ENV=test",
]