首页 > 解决方案 > Pytest:如何测试从环境变量设置的类变量?

问题描述

我正在使用 Pytest 来测试一个类变量是否设置正确。此类变量是使用环境变量设置的。我想确保它已设置。

我尝试在 conftest.py 上使用 autouse 固定装置,使用 monkeypatch 设置 env var,效果很好。但是,fixture 在每次测试之前执行,并且类变量在导入时设置。如果我在测试前导入类,我的类 var 出来是空的。如果我在每个测试中都导入它,它可以工作,但这不是一个好方法。

我的类.py

class MyClass(object):
    my_class_var = os.getenv('MY_ENV_VAR')

conftest.py

@pytest.fixture(autouse=True)
def env_setup(monkeypatch):
    monkeypatch.setenv('MY_ENV_VAR', 'TESTING')

测试类.py

class TestEnvironment:
    def test_env_var(self):
        from module.myclass import MyClass
        assert MyClass.my_class_var == "TESTING"
        #this works

class TestOtherStuff:
#...

将有更多的环境测试,就像 TestOtherStuff 上的其他测试一样。我正在寻找一种在设置环境变量后加载类的方法,而不必在每次测试时都导入该类。

编辑 - 答案中的解决方案

标签: pythonpytest

解决方案


也许是否尝试使用用户范围控制

if name == '<strong>ma​​in': main()

在这种情况下 !我们没有导入任何类,否则您可以执行一个类。


推荐阅读