【问题标题】:Vscode pytest test discovery fails due to missing environment variablevscode pytest 测试发现因缺少环境变量而失败
【发布时间】:2019-09-16 14:01:04
【问题描述】:

我有 config.py 模块,它加载连接到 MongoDB 所需的环境变量。 当我尝试在 vscode 中运行测试发现时,pytest 没有找到这些环境变量。 在测试文件中,我使用了导入配置模块的模块中的一些方法,因此读取这些环境变量的代码始终运行。

环境变量在我的 .bashrc 文件中定义。

如果我从终端运行,单独 Pytest 可以使用这些环境变量运行测试

python /home/orch/.vscode/extensions/ms-python.python-2019.9.34911/pythonFiles/testing_tools/run_adapter.py 发现 pytest -- -s --cache-clear 测试

这是激活测试发现工具时 vscode 运行的命令

我希望 vs 代码找到测试

输出如下错误:

tests/test_db.py:5: in <module>
    from src.core.db import MongoHandler
src/core/db.py:5: in <module>
    from src.core.loggers import gcl_log_event
src/core/loggers.py:8: in <module>
    from configuration import config
configuration/config.py:22: in <module>
    user_name = os.environ['EVO_DB_USER_NAME']
../../.local/share/virtualenvs/evolve-sjbSOQds/lib/python3.7/os.py:678: in __getitem__
    raise KeyError(key) from None
E   KeyError: 'EVO_DB_USER_NAME'

【问题讨论】:

  • 设置完env vars后你有没有重新打开vscode?​​span>
  • 是的,我相信问题比这复杂得多:(

标签: python-3.x visual-studio-code pytest


【解决方案1】:

我有一个类似的问题,并通过在我的工作区文件夹中声明一个环境变量文件 .envs 来解决它,它可能看起来像:

EVO_DB_USER_NAME=<your_name>
OTHER_ENVIRONMENT_VARIABLE=<other_name>

有了这个,你可以将你的 .vscode/settings.json 扩展为:

{   
    ...,
     "python.testing.pytestEnabled": true,
    "python.envFile":   "${workspaceFolder}/.envs",
    ...,
}

这样它会在运行测试发现之前导入环境变量。

此外,您还可以在 Visual Studio 代码的 issue 中找到相关讨论。

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多