繁体   English   中英

在 PyTest 中使用 os.environ.getenv 而不是 ini 或 env 文件访问环境变量

[英]Access Environment Variables in PyTest Using os.environ.getenv and not an ini or env File

如果这有点漫不经心,请提前道歉,但在过去的几个小时里,我试图弄清楚这一点让我筋疲力尽。

我目前正在尝试将 PyTest 与带有 PyTest 配置的 Visual Studio Code Test Explorer 一起使用。 我正在使用单独的脚本在终端内设置环境变量,该脚本从 Amazon Parameter Store 中提取机密并将它们作为环境变量存储在终端内。

但是,PyTest 无法“看到”我的脚本设置的环境变量,并且包含我的环境变量的变量只是返回 NoneType。

如果我不使用 PyTest,我只需调用os.environ.get就可以轻松获取环境变量,并且它可以完美地检索环境变量。

我已经看到了在 PyTest 中设置环境变量的多种方法,但它们通常涉及使用 .ini 文件或 .env 文件,这需要将环境变量的值硬编码到这些文件中。

有没有办法说“嘿 PyTest,我知道你不喜欢os.environ.get ,但我保证那些环境变量会在运行时存在。” 我这样说是因为它就像 PyTest 在运行时看不到系统中存在的任何环境变量,并且必须手动告知变量存在于 .env 文件中(您必须在其中硬编码敏感信息)。

对此的任何帮助将不胜感激。

pytest 可以很好地使用环境变量。 考虑这个简单的测试:

import os


def test_env():
    assert os.environ.get("MYVAR") == "expected_value"

如果在我的环境中运行没有pytestMYVAR ,我会得到:

$ pytest
...
test_envvar.py F                                                                                [100%]

=============================================== FAILURES ================================================
_______________________________________________ test_env ________________________________________________
test_envvar.py:5: in test_env
    assert os.environ.get("MYVAR") == "expected_value"
E   AssertionError: assert None == 'expected_value'
...

但是,如果我将其设置在 pytest 运行的环境中,则测试通过:

$ export MYVAR=expected_value
$ pytest
...
test_envvar.py .                                                                                [100%]

=========================================== 1 passed in 0.01s ===========================================

如果您没有看到环境变量的预期值,则表明您没有将它们设置在正确的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM