在 VS Code 中使用 Conda虚拟环境高效运行与调试 Django 单元测试

在 Python Web 开发中,良好的测试流程是保障项目质量的基石。如果你使用 Anaconda 管理依赖,并已创建了一个名为 web 的 Conda 虚拟环境(其中安装了 DjangoFlask 等常用 Web 框架),那么本文将为你详细说明如何在 Windows 系统下的 VS Code 中,基于这个 web 环境高效地运行和调试 Django 单元测试。


🧰 前提条件

确保你的开发环境满足以下要求:

  • 已安装 Anaconda 或 Miniconda
  • 已创建并配置好名为 web 的 Conda 虚拟环境(例如路径为 D:\Anaconda3\envs\web
  • 该环境中已通过 pipconda 安装了 django(以及其他你可能用到的包,如 flask
  • 项目位于 D:\django\chapter03,包含 manage.py
  • VS Code 中已安装官方 Python 扩展
bash 复制代码
#如果尚未安装 Django,可执行:可通过以下命令确认环境是否就绪:
conda env list          # 查看是否存在 web 环境
conda list -n web       # 查看 web 环境中已安装的包

如果尚未安装 Django,可执行

bash 复制代码
conda run -n web pip install django
# 或批量安装 requirements.txt 中的依赖
conda run -n web pip install -r requirements.txt

推荐测试运行方式

方式一:使用 conda run(无状态、适合脚本或 CI)

无需激活环境,直接在指定 Conda 环境中运行测试,推荐用于自动化场景:

复制代码
复制代码
# 运行全部测试
conda run -n web python manage.py test

# 使用独立的内存 SQLite 测试配置(推荐)
conda run -n web python manage.py test --settings=chapter03.settings_test

方式二:交互式终端(适合本地开发调试)

先激活 web 环境,再逐条执行命令:

复制代码
复制代码
conda activate web
python manage.py migrate --settings=chapter03.settings_test --noinput
python manage.py test --settings=chapter03.settings_test

✅ 激活后,所有 python 命令都会自动使用 web 环境中的解释器和包。


🎯 运行特定测试用例

Django 支持非常灵活的测试粒度控制:

复制代码
# 测试整个 app(如 books)
python manage.py test books --settings=chapter03.settings_test

# 测试某个 TestCase 类
python manage.py test books.tests.CountryManagerTestCase --settings=chapter03.settings_test

# 仅运行单个测试方法
python manage.py test books.tests.CountryManagerTestCase.test_country_name_prefix --settings=chapter03.settings_test

# 使用关键字筛选(需 pytest 风格支持,Django 4.2+ 原生支持 -k)
python manage.py test -k test_country_name_prefix --settings=chapter03.settings_test

🐞 在 VS Code 中调试测试

步骤 1:选择正确的 Python 解释器

  1. 打开命令面板(Ctrl+Shift+P
  2. 输入 Python: Select Interpreter
  3. 从列表中选择 web 环境对应的解释器(通常显示为 Python 3.x.x ('web': conda) 或完整路径 D:\Anaconda3\envs\web\python.exe

步骤 2:配置调试启动项(.vscode/launch.json)在项目根目录创建 .vscode/launch.json 文件,添加以下配置:

bash 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Django: Single Test (sqlite)",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/manage.py",
      "args": [
        "test",
        "books.tests.CountryManagerTestCase.test_country_name_prefix",
        "--settings=chapter03.settings_test"
      ],
      "django": true,
      "console": "integratedTerminal",
      "env": {
        "PYTHONPATH": "${workspaceFolder}"
      }
    },
    {
      "name": "Django: All Tests (sqlite)",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/manage.py",
      "args": [
        "test",
        "--settings=chapter03.settings_test"
      ],
      "django": true,
      "console": "integratedTerminal",
      "env": {
        "PYTHONPATH": "${workspaceFolder}"
      }
    },
    {
      "name": "Django: App Tests (books)",
      "type": "python",
      "request": "launch",
      "program": "${workspaceFolder}/manage.py",
      "args": [
        "test",
        "books",
        "--settings=chapter03.settings_test"
      ],
      "django": true,
      "console": "integratedTerminal",
      "env": {
        "PYTHONPATH": "${workspaceFolder}"
      }
    }
  ]
}

配置完成后,打开 VS Code 左侧的"运行和调试"面板,选择对应配置,点击 ▶️ 即可启动调试会话,并在断点处暂停。


🗃️ 关于 settings_test.py:隔离测试数据库

为避免测试污染开发或生产数据库,建议使用独立的测试配置文件 chapter03/settings_test.py

复制代码
from .settings import *

# 覆盖数据库配置:使用内存 SQLite
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',  # 内存数据库,每次测试自动重建
    }
}

优势:

  • 零外部依赖:无需启动 MySQL/PostgreSQL
  • 速度快:内存操作远快于磁盘 I/O
  • 完全隔离:每次测试都从干净状态开始

🔁 若需连接真实数据库进行集成测试,可改用默认 settings 并确保数据库服务可用。


常见问题与排查

问题 原因 解决方案
ModuleNotFoundError: No module named 'django' 当前 Python 环境未安装 Django 确保在 web 环境中执行 pip install django
CommandError: You must set settings.ALLOWED_HOSTS... 测试配置未继承完整设置 检查 settings_test.py 是否正确 from .settings import *
no such table: books_country 测试数据库未应用迁移 先运行 python manage.py migrate --settings=chapter03.settings_test --noinput
SQL 语法错误 / incomplete input 自定义 Manager 或 Raw SQL 有误 在测试 shell 中调试: python manage.py shell --settings=chapter03.settings_test

🌐 附:VS Code 界面语言切换(可选)

虽然不影响代码生成或 Copilot 输出,但你可以将 VS Code 界面设为中文:

  1. 安装扩展:Chinese (Simplified) Language Pack for Visual Studio Code
  2. Ctrl+Shift+P → 输入 Configure Display Language → 选择 zh-cn
  3. 重启 VS Code

✅ 总结

借助 Anaconda 的 web 虚拟环境,你可以在一个干净、可控的 Python 环境中同时管理多个 Web 项目依赖(如 Django 和 Flask)。结合 VS Code 强大的调试能力与 Django 的测试框架,你可以:

  • 快速运行全部或部分测试
  • 在内存数据库中安全执行测试
  • 通过图形化界面单步调试测试逻辑
  • 避免环境冲突和依赖污染
相关推荐
Java般若生2 小时前
conda windows11 安装 指定envs的目录创建虚拟环境
conda
我会一直在的2 小时前
Appium的基础API介绍
python·appium·自动化
liliangcsdn2 小时前
conda环境jupyter-lab GLIBCXX_3.4.29问题探索
linux·conda
凌盛羽2 小时前
用Python非常流行的openpyxl库对Excel(.xlsx格式)文件进行创建、读取、写入、显示等操作
数据库·python·链表·excel
编织幻境的妖2 小时前
Python对象序列化和反序列化方法总结
开发语言·python
Cherry的跨界思维2 小时前
8、Python正则表达式精准搜索实战:从模糊匹配到精准定位
开发语言·python·正则表达式·django·flask·pygame·tornado
软件开发技术深度爱好者2 小时前
Python + Ursina设计3D小游戏
开发语言·python
清静诗意2 小时前
Django REST Framework(DRF)PATCH 方法部分更新全解析与实战
后端·python·django
黑客思维者2 小时前
Python 3.14(2025最新版)的核心语法特性分析
服务器·开发语言·python·多线程