You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中用SQLite运行pytest测试(规避PlanetScale付费升级)

问题描述

个人开发实验室管理软件(Django后端),默认使用PlanetScale的MySQL数据库,但免费版无法创建测试库,因此希望改用SQLite运行pytest测试。通过Dockerfile执行pytest时,所有测试报错,系统仍尝试访问MySQL,提示“create database is not supported”。

解决方案

方案1:动态切换数据库配置(推荐)

修改settings.py,根据运行环境自动切换测试用的SQLite数据库:

import os
import sys

# 生产/开发环境的PlanetScale配置
DATABASES = {
    'default': {
        'ENGINE': 'django_psdb_engine',    
        'NAME': os.getenv('DB_NAME'),
        'HOST': os.getenv('DB_HOST'),
        'PORT': os.getenv('DB_PORT'),
        'USER': os.getenv('DB_USER'),
        'PASSWORD': os.getenv('DB_PASSWORD'),
        'OPTIONS': {
            'ssl': {'ca': os.getenv('MYSQL_ATTR_SSL_CA')},
            'charset': 'utf8mb4',
        },
    }
}

# 检测测试环境,切换为SQLite
# 当执行pytest时,sys.argv会包含'test';或者通过环境变量强制切换
if 'test' in sys.argv or os.getenv('TEST_ENV') == 'true':
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',  # 内存数据库,测试速度更快
    }

方案2:通过Docker环境变量触发切换

修改Dockerfile,在运行pytest时设置测试环境变量,确保settings切换到SQLite:

FROM python:3.11-alpine
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN apk update \
    && apk add --virtual build-deps gcc python3-dev musl-dev \
    && apk add --no-cache mariadb-dev 
RUN pip install -r requirements.txt
RUN apk del build-deps
COPY . /code/
# 设置TEST_ENV=true,触发settings里的数据库切换
RUN TEST_ENV=true pytest -v

方案3:使用测试专用的settings文件

创建settings_test.py,专门用于测试环境:

# 导入基础配置
from api.settings import *

# 覆盖数据库配置为SQLite
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}

然后修改pytest.ini,指定测试用的settings:

DJANGO_SETTINGS_MODULE = api.settings_test
python_files = tests.py test_*.py *_tests.py
addopts = --nomigrations --cov=. --cov-report=html

修改完成后直接运行pytest -v即可,无需额外环境变量。

验证修改

重新构建Docker镜像并运行测试,此时系统会使用SQLite内存数据库,不再尝试连接PlanetScale的MySQL,测试可正常执行。

内容的提问来源于stack exchange,提问作者Desmond Gilmour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:30:06