Python 使用pytest和tox的环境变量

Python 使用pytest和tox的环境变量,python,pytest,tox,Python,Pytest,Tox,如何使用pytest和tox测试环境变量 验证.py test_validate.py 如果我在tox.ini文件中设置环境变量: [testenv] setenv = ENV_VAR=valid_env_value 测试通过了,但我希望保持测试隔离。环境变量应该由测试提供,而不是由测试运行者提供。一种选择是使用和。或者,您可以在测试用例的setUp()中提供环境变量,然后在tearDown()中重置它们。环境变量应该由您的测试提供,而不是由您的测试运行者提供。一种选择是使用和。或者,您可以在

如何使用pytest和tox测试环境变量

验证.py test_validate.py 如果我在
tox.ini
文件中设置环境变量:

[testenv]
setenv = ENV_VAR=valid_env_value

测试通过了,但我希望保持测试隔离。

环境变量应该由测试提供,而不是由测试运行者提供。一种选择是使用和。或者,您可以在测试用例的
setUp()
中提供环境变量,然后在
tearDown()
中重置它们。环境变量应该由您的测试提供,而不是由您的测试运行者提供。一种选择是使用和。或者,您可以在测试用例的
setUp()
中提供环境变量,然后在
tearDown()
中重置它们在测试运行之前,我在设置
ENV\u VAR
变量时遇到了问题。 必须在测试中重新加载
validate
模块,才能使用
imp.reload

test_validate.py
我在测试运行之前设置
ENV_VAR
变量时遇到问题。 必须在测试中重新加载
validate
模块,才能使用
imp.reload

test_validate.py
你是说你想清理环境。测试后的变量对吗?在这种情况下,我尝试在不使用tox.ini文件设置环境变量的情况下通过测试。您的意思是希望清除环境变量。测试后的变量对吗?对于这种情况,我尝试在不使用tox.ini文件设置环境变量的情况下通过测试。
class TestValidateEnvVar:
    def test_validate_env_var_pass(self):
        value = 'valid_env_value'
        os.environ["ENV_VAR"] = value
        validate.validate_env_var(value)
[testenv]
setenv = ENV_VAR=valid_env_value
import mock
from imp import reload
class TestValidateEnvVar:
    @mock.patch.dict(os.environ, {"ENV_VAR": "env_value"})
    def test_validate_env_var_pass(self):
        reload(validate)
        value = 'env_value'
        os.environ["ENV_VAR"] = value
        validate.validate_env_var(value)