2017-01-02 1 views
0

Wie kann ich Umgebungsvariablen mit Pytest und Tox testen?Umgebungsvariablen mit Pytest und 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) 

Wenn ich die Umgebungsvariablen in der tox.ini-Datei festgelegt:

[testenv] 
setenv = ENV_VAR=valid_env_value 

Der Test besteht, aber ich möchte um den Test isoliert zu halten.

+0

mit zu arbeiten, meinen Sie Sie die env zu bereinigen möchten. Variablen nach dem Test richtig? –

+0

In diesem Fall versuche ich, den Test zu bestehen, ohne die Umgebungsvariable mithilfe der tox.ini-Datei zu setzen. – JohnBoy

Antwort

2

Die Umgebungsvariablen sollten von Ihrem Test bereitgestellt werden, nicht von Ihrem Test-Runner. Eine Option ist die Verwendung von mock und patch os.environ. Alternativ können Sie auch die Umgebungsvariablen in Ihrem Testfall setUp() angeben und sie in tearDown() zurücksetzen.

0

Ich hatte ein Problem mit der ENV_VAR Variable, die gesetzt wurde, bevor der Test laufen würde. Das validate Modul hatte im Test neu geladen werden richtig imp.reload

test_validate.py

import mock 
from imp import reload 
class TestValidateEnvVar: 
    @mock.patch.dict(os.environ, {"ENV_VAR": "valid_env_value"} 
    def test_validate_env_var_pass(self): 
     reload(validate) 
     value = 'valid_env_value' 
     os.environ["ENV_VAR"] = value 
     validate.validate_env_var(value)