pytest 和 tox 的环境变量
Environment variables with pytest and tox
如何使用 pytest 和 tox 测试环境变量?
validate.py
ENV_VAR = os.environ['ENV_VAR']
def validate_env_var(value):
if value != ENV_VAR:
raise Exception
test_validate.py
class TestValidateEnvVar:
def test_validate_env_var_pass(self):
value = 'valid_env_value'
os.environ["ENV_VAR"] = value
validate.validate_env_var(value)
如果我在 tox.ini
文件中设置环境变量:
[testenv]
setenv = ENV_VAR=valid_env_value
测试通过,但我想隔离测试。
环境变量应该由您的测试提供,而不是由您的测试运行器提供。一种选择是使用 mock and 。或者,您可以只在测试用例的 setUp()
中提供环境变量,然后在 tearDown()
.
中重置它们
我在测试 运行 之前设置 ENV_VAR
变量时遇到问题。
validate
模块必须在测试中重新加载才能使用 imp.reload
正常工作
test_validate.py
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)
如何使用 pytest 和 tox 测试环境变量?
validate.py
ENV_VAR = os.environ['ENV_VAR']
def validate_env_var(value):
if value != ENV_VAR:
raise Exception
test_validate.py
class TestValidateEnvVar:
def test_validate_env_var_pass(self):
value = 'valid_env_value'
os.environ["ENV_VAR"] = value
validate.validate_env_var(value)
如果我在 tox.ini
文件中设置环境变量:
[testenv]
setenv = ENV_VAR=valid_env_value
测试通过,但我想隔离测试。
环境变量应该由您的测试提供,而不是由您的测试运行器提供。一种选择是使用 mock and setUp()
中提供环境变量,然后在 tearDown()
.
我在测试 运行 之前设置 ENV_VAR
变量时遇到问题。
validate
模块必须在测试中重新加载才能使用 imp.reload
test_validate.py
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)