How to pass environment variables to pytest
Another alternative is to use the pytest-env plugin. It can be configured like so:
[pytest]
env =
HOME=~/tmp
D:RUN_ENV=test
the D:
prefix allows setting a default value, and not override existing variables passed to py.test
.
Note: you can explicitly run pytest with a custom config, if you only sometimes need to run a specialized environment set up:
pytest -c custom_pytest.ini
If you use PyCharm vs pytest-dotenv, this may be helpful
In addition to other answers. There is an option to overwrite pytest_generate_tests
in conftest.py
and set ENV variables there.
For example, add following into conftest.py
:
import os
def pytest_generate_tests(metafunc):
os.environ['TEST_NAME'] = 'My super test name| Python version {}'.format(python_version)
This code will allow you to grab TEST_NAME
ENV variable in your tests application. Also you could make a fixture:
import os
import pytest
@pytest.fixture
def the_name():
return os.environ.get('TEST_NAME')
Also, this ENV variable will be available in your application.