首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PyTest而不是ini或env文件访问os.environ.getenv中的环境变量

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

Stack Overflow用户
提问于 2022-06-13 23:35:22
回答 1查看 605关注 0票数 0

如果这件事有点杂乱无章,我会事先表示歉意,但在过去的几个小时里,我已经疲惫不堪了。

我目前正尝试在Visual代码测试资源管理器()中使用带有PyTest配置的PyTest。我使用一个单独的脚本在我的终端中设置我的环境变量,该脚本从中提取秘密,并将它们存储在我的终端中,作为一个环境变量。

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

如果我不使用PyTest,当我只调用os.environ.get时,环境变量就会很容易地被拾取,并且可以很好地检索环境变量。

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

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

如果能对此提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-06-14 00:30:26

pytest可以很好地处理环境变量。考虑一下这个简单的测试:

代码语言:javascript
运行
复制
import os


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

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

代码语言:javascript
运行
复制
$ 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运行的环境中设置它,则测试通过:

代码语言:javascript
运行
复制
$ export MYVAR=expected_value
$ pytest
...
test_envvar.py .                                                                                [100%]

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

如果您没有看到环境变量的预期值,这意味着您没有将它们设置在正确的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72610090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档