【问题标题】:Separate .env for testing vs debug单独的 .env 用于测试和调试
【发布时间】:2020-11-03 03:16:22
【问题描述】:

我正在使用 VSCode 开发容器,我很难弄清楚如何为我的 pytest 设置运行不同的 .env 文件,而我只想运行 uvicorn/debug。

我可以在 settings.json 中设置一个 envfile,它可以工作,但我必须根据我是想测试还是只运行服务器来来回更改此路径。我已经读到您可以在 launch.json 中更改测试的 envfile,但是当发现/运行测试不再出现时,这些是 launch.json 的有效设置,并且必须烘焙到 vscode-python 扩展中?

我真的很困惑,因为我觉得这是一个常见的用例,我真正想要完成的只是设置一个不同的数据库连接器,以便测试可以删除/创建测试表,但开发人员会在一个单独的数据库。

【问题讨论】:

  • 不确定这是否有帮助,但我创建了一个脚本,该脚本将环境名称作为参数,例如testdevprod,然后使用模式。基于此,我通过pydantic 加载配置正确的文件。有关配置文件的更多详细信息,请参阅fastapi.tiangolo.com/advanced/settings/#the-config-file
  • 感谢您的评论,类似的事情将成为我的其他解决方法!这有点奇怪,但我通过让我的 test.env 文件成为 settings.json 的默认文件,然后为我的 launch.json 指定一个不同的文件,在某种程度上解决了这个问题。
  • 没有灵丹妙药。此外,这取决于您是在裸机还是在容器中运行它。这可能会产生很大影响,因此作者很难创建一个独特的解决方案,尽管方向是容器化、git 和 CI/CD 系统,它们可以利用不同的 .env 文件,这些文件在 prod 之间不共享, devtest
  • 绝对没有银弹哈哈!是的,我只是感到惊讶,因为当 vscode python 插件将“发现测试”类型的东西放在 launch.json 中时,这实际上是以前可配置的。该选项似乎不再可用,并且以某种方式刚刚加入。
  • 可能插件还没有更新。您可以在项目的回购(或他们拥有的任何东西)上打开一个问题/错误。也许维护者会修复它

标签: python visual-studio-code fastapi vscode-python


【解决方案1】:

对于任何偶然发现此问题的人,我找到了一种解决方法,即指定某个 envfile 用于运行和调试,然后在 settings.json 中使用单独的 env 用于测试。

所以想象一下你有

dev.env 其中包含

environment=dev
...

和 test.env 其中包含

environment=test
...

然后您将在您的.vscode/settings.json 中包含这一行

"python.envFile": "${workspaceFolder}/test.env"

这就是我使用 uvicorn 启动 fastapi 时的启动配置:

{
    "name": "Python: FastAPI",
    "type": "python",
    "request": "launch",
    "module": "uvicorn",
    "envFile": "${workspaceFolder}/dev.env",
    "args": [
        "app.main:app",
        "--reload"
    ]
}

这是它的配置方式有点奇怪,但它现在似乎可以工作。

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 2010-11-11
    • 2013-01-07
    • 2019-04-29
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多