簡體   English   中英

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

測試通過了,但我想保持測試隔離。

在運行測試之前,我對ENV_VAR變量設置有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)

環境變量應該由您的測試提供,而不是由測試運行者提供。 一種選擇是使用模擬補丁os.environ 或者,您可以只在測試用例的setUp()提供環境變量,然后在tearDown()重置它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM