diff --git a/tests/app/test_cloudfoundry_config.py b/tests/app/test_cloudfoundry_config.py index dfd2ccdf7..d03aa29d4 100644 --- a/tests/app/test_cloudfoundry_config.py +++ b/tests/app/test_cloudfoundry_config.py @@ -6,12 +6,11 @@ from app.cloudfoundry_config import extract_cloudfoundry_config @pytest.fixture -def cloudfoundry_environ(monkeypatch): - monkeypatch.setenv('VCAP_APPLICATION', '{"space_name":"🚀🌌"}') +def cloudfoundry_environ(os_environ): + os.environ['VCAP_APPLICATION'] = '{"space_name":"🚀🌌"}' -@pytest.mark.usefixtures('os_environ', 'cloudfoundry_environ') -def test_extract_cloudfoundry_config_populates_other_vars(): +def test_extract_cloudfoundry_config_populates_other_vars(cloudfoundry_environ): extract_cloudfoundry_config() assert os.environ['NOTIFY_ENVIRONMENT'] == '🚀🌌' diff --git a/tests/app/test_config.py b/tests/app/test_config.py index 4d0c7387d..166e5d277 100644 --- a/tests/app/test_config.py +++ b/tests/app/test_config.py @@ -12,21 +12,24 @@ def cf_conf(): @pytest.fixture -def reload_config(): +def reload_config(os_environ): """ Reset config, by simply re-running config.py from a fresh environment """ old_env = os.environ.copy() + os.environ.clear() yield - os.environ = old_env + os.environ.clear() + for k, v in old_env.items(): + os.environ[k] = v importlib.reload(config) -def test_load_cloudfoundry_config_if_available(monkeypatch, reload_config): +def test_load_cloudfoundry_config_if_available(reload_config): os.environ['API_HOST_NAME'] = 'env' - monkeypatch.setenv('VCAP_APPLICATION', 'some json blob') + os.environ['VCAP_APPLICATION'] = 'some json blob' with mock.patch('app.cloudfoundry_config.extract_cloudfoundry_config', side_effect=cf_conf) as cf_config: # reload config so that its module level code (ie: all of it) is re-instantiated @@ -38,10 +41,10 @@ def test_load_cloudfoundry_config_if_available(monkeypatch, reload_config): assert config.Config.API_HOST_NAME == 'cf' -def test_load_config_if_cloudfoundry_not_available(monkeypatch, reload_config): +def test_load_config_if_cloudfoundry_not_available(reload_config): os.environ['API_HOST_NAME'] = 'env' - monkeypatch.delenv('VCAP_APPLICATION', raising=False) + os.environ.pop('VCAP_APPLICATION', None) with mock.patch('app.cloudfoundry_config.extract_cloudfoundry_config') as cf_config: # reload config so that its module level code (ie: all of it) is re-instantiated diff --git a/tests/conftest.py b/tests/conftest.py index c5e4b371f..b78bb5ce6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2827,9 +2827,10 @@ def os_environ(): """ # for use whenever you expect code to edit environment variables old_env = os.environ.copy() - os.environ = {} + os.environ.clear() yield - os.environ = old_env + for k, v in old_env.items(): + os.environ[k] = v @pytest.fixture