VSCode 1.59.1配置Django unittest测试运行与调试报错求解
Django 单元测试 VSCode 配置方案
报错根因
该配置报错是因为VSCode直接调用unittest框架执行测试时,不会自动完成Django环境初始化:python manage.py test 执行时会自动设置DJANGO_SETTINGS_MODULE环境变量并加载Django配置,而原生unittest执行缺少这一步,因此触发配置未加载的错误。
配置步骤(无需安装额外依赖)
步骤1:修改.vscode/settings.json配置
在原有配置基础上新增.env文件引用,用于注入Django所需的环境变量:
{ "python.testing.unittestArgs": [ "-v", "-s", "./routes/tests", "-p", "test*.py" ], "python.testing.pytestEnabled": false, "python.testing.nosetestsEnabled": false, "python.testing.unittestEnabled": true, // 新增以下配置指定环境变量文件 "python.envFile": "${workspaceFolder}/.vscode/.env" }
步骤2:创建.vscode/.env环境变量文件
在.vscode目录下新建.env文件,写入以下内容,注意将你的项目名替换为实际Django项目的根配置模块名(即与manage.py同目录的配置包名称):
DJANGO_SETTINGS_MODULE=你的项目名.settings
可选:调试配置(.vscode/launch.json)
如果需要断点调试单元测试,在.vscode/launch.json中新增如下配置:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Django 单元测试", "type": "python", "request": "launch", "program": "${workspaceFolder}/manage.py", "args": [ "test", "routes.tests", "-v", "2" ], "django": true, "justMyCode": true } ] }
备选方案:测试文件初始化(无需修改VSCode配置)
如果不希望修改VSCode全局配置,可以在所有测试文件的头部加入以下初始化代码,或者统一封装为测试基类继承使用:
import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "你的项目名.settings") django.setup()
验证效果
配置完成后重启VSCode,打开测试面板重新扫描测试用例,运行测试即可正常执行,不会再出现配置未加载的报错。
内容的提问来源于stack exchange,提问作者Andrii
相关产品推荐
相关产品推荐

