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

仅Django项目CI流程失败,求助排查测试环节问题

Django CI 测试环节失败排查求助

概述

以下是我的GitHub Actions配置文件:

name: Django CI

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 1
      matrix:
        python-version: [ 3.11 ]

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v3
        with:
          python-version: ${{ matrix.python-version }}
          cache: pip

      - name: Set up and run tests
        env:
          DB_ENGINE: django.db.backends.mysql
          DB_NAME: portfolio_db
          DB_USER: root
          DB_PASSWORD: root
        run: |
          sudo systemctl start mysql
          mysql -u$DB_USER -p$DB_PASSWORD -e "CREATE DATABASE $DB_NAME;"
          python3 --version
          python3 -m venv venv
          source venv/bin/activate
          python -m pip install --upgrade pip
          python -m pip install -r requirements.txt
          python manage.py makemigrations register
          python manage.py migrate
          python manage.py makemigrations vietnam_research gmarker shopping linebot warehouse
          python manage.py migrate
          mysql -u$DB_USER -p$DB_PASSWORD -e "USE portfolio_db; SHOW TABLES;"
          export DJANGO_SECRET_KEY="$(base64 <<< "$RANDOM|TeStiNg|$RANDOM" | tr -d '
')"
          python manage.py test

问题详情

  • CI流程迁移步骤执行正常,但测试环节直接失败
  • 检测到的测试用例数量和本地/VPS环境存在差异
  • 项目在VPS服务器上运行完全正常

错误截图:
错误截图

排查建议

1. 输出测试详细日志

修改CI中的测试命令,增加 verbosity 参数获取具体错误信息:

python manage.py test --verbosity 2

这会显示每个测试用例的执行过程,定位具体失败的测试项及原因。

2. 对齐环境依赖版本

CI环境可能安装了最新兼容版本的依赖,和VPS的固定版本存在差异。在CI步骤中添加依赖版本输出:

pip freeze

对比VPS上的pip freeze结果,将requirements.txt中的依赖版本锁定为VPS使用的版本。

3. 修复SECRET_KEY生成逻辑

当前随机生成的SECRET_KEY可能存在格式问题,替换为固定的测试密钥(仅用于CI):

export DJANGO_SECRET_KEY="test-ci-secret-key-123456789"

4. 确认测试用例发现规则

测试数量差异可能是CI环境未正确识别测试文件:

  • 检查所有含测试的app是否已加入settings.py的INSTALLED_APPS
  • 测试文件需命名为tests.py或放在tests目录下(遵循Django默认发现规则)
  • 尝试指定app运行测试,排查是否是特定模块的测试未被发现:
    python manage.py test register vietnam_research gmarker shopping linebot warehouse
    

5. 补充系统依赖

Ubuntu-latest镜像可能缺少MySQL相关系统库,添加安装步骤:

sudo apt-get update && sudo apt-get install -y libmysqlclient-dev

内容的提问来源于stack exchange,提问作者yoshitaka okada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:53:14