Skip to main content
 首页 » 编程设计

python之pytest 和 tox 的环境变量

2025年05月04日17开发

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

验证.py

ENV_VAR = os.environ['ENV_VAR'] 
 
def validate_env_var(value): 
    if value != ENV_VAR: 
        raise Exception 

测试验证.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 

测试通过,但我想保持测试隔离。

请您参考如下方法:

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

正常工作

测试验证.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)