单独的.env测试和调试

问题描述

我正在使用VSCode devcontainer,与试图只运行uvicorn / debug相比,我很难找出如何为我的pytest设置运行不同的.env文件

我可以在settings.json中设置一个envfile,它可以工作,但是我必须来回更改此路径,具体取决于我是要测试还是运行服务器。我已经读过您可以在launch.json中更改测试的env文件,但是当发现/运行测试不再出现时,这些是launch.json的有效设置,必须放入vscode-python扩展中?

我真的很困惑,因为我觉得这是一个普通的用例,我真正想完成的就是设置一个不同的数据库连接器,以便测试可以删除/创建测试表,但是开发人员将坚持使用一个单独的表数据库

解决方法

对于任何偶然发现此问题的人,我发现了一种解决方法,该方法是指定一个特定的env文件来运行和调试,然后在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"
    ]
}

这是必须配置的方式,这有点奇怪,但它似乎目前可以使用。