首页 > 解决方案 > 单独的 .env 用于测试和调试

问题描述

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

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

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

标签: pythonvisual-studio-codefastapivscode-python

解决方案


对于任何偶然发现这一点的人,我找到了一种解决方法,即指定一个特定的 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"
    ]
}

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


推荐阅读