GitHub Actions运行Django测试未识别到测试用例问题求助
Django GitHub Action 测试识别失败排查方案
核心问题定位与修正
1. 服务容器配置错误
你当前工作流中PostgreSQL服务的访问地址配置不匹配:
- GitHub Actions中服务容器的访问hostname就是你定义的服务标签名,你配置的服务标签是
db,但测试步骤的环境变量里写的POSTGRES_HOST: postgres是错误值,会导致Django无法连接数据库,部分场景下会静默跳过测试执行。 - 需补全PostgreSQL完整配置参数,和你的Django数据库配置对齐,默认Postgres镜像的默认用户、库名都是
postgres。
2. 测试用例未识别排查
本地可正常识别测试但CI返回0条测试,按优先级排查以下项:
- 测试文件命名符合Django默认规则:以
test开头,如test_views.py,且tests目录下存在__init__.py文件,被识别为Python包 - 所有包含测试的Django应用都已加入
INSTALLED_APPS配置,Django默认只会扫描已注册应用下的测试文件 - 工作路径匹配:CI中默认在仓库根目录执行命令,建议先切换到api目录再执行测试命令,避免相对路径异常
- 可在测试步骤前增加目录打印的调试命令,确认代码拉取完整、测试文件存在:
pwd && ls -la ./api && ls -la ./api/*/tests/
3. 修正后的完整工作流配置
name: Django CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: tests: runs-on: ubuntu-latest # 固定Python大版本,避免最新版本和依赖不兼容 container: python:3.11 services: db: # 固定PostgreSQL版本,和本地开发使用的版本对齐,避免兼容性问题 image: postgres:15 env: POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: password options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Check out repository code uses: actions/checkout@v4 - name: Install Dependencies run: | python -m pip install --upgrade pip pip install -r api/requirements.txt - name: Run Tests run: | cd api && python manage.py test env: POSTGRES_HOST: db POSTGRES_PORT: 5432 POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: password # 如需指定CI专用配置文件,可新增环境变量: # DJANGO_SETTINGS_MODULE: api.settings.ci
内容的提问来源于stack exchange,提问作者Yosuf
相关产品推荐
相关产品推荐

