如何在Gitlab CI/CD流水线中正确配置pytest测试任务
GitLab CI 执行pytest测试的正确配置
你之前写的配置无法正常运行,核心问题有三点:
- 没有在配置顶层声明
stages字段,未在该字段中定义的test阶段不会被流水线识别调度 script段直接写测试文件名不符合执行逻辑:pytest用例需要通过pytest命令启动收集,直接调用.py文件既没有指定执行解释器,也不会触发pytest的测试运行流程- 缺少环境准备步骤:CI运行的基础环境默认不会预装Python、pytest以及项目依赖,直接执行命令会报不存在的错误
最小可用配置
直接替换项目根目录下的.gitlab-ci.yml内容即可:
# 定义流水线执行阶段,按书写顺序执行 stages: - test run_pytest: stage: test # 指定Python运行环境,可根据项目实际版本替换为python:3.9、python:3.10等 image: python:3.11-slim script: # 安装依赖,如果项目有requirements.txt可替换为 pip install -r requirements.txt - pip install pytest # 执行测试,-v参数用于输出每个用例的详细执行结果 - pytest test_sample.py -v
流水线页面直接展示测试结果的扩展配置
如果不想逐行翻日志看结果,可以配置junit报告上传,GitLab会自动解析在流水线页面展示用例通过/失败统计:
stages: - test run_pytest: stage: test image: python:3.11-slim script: - pip install pytest # 执行测试同时生成junit格式报告 - pytest test_sample.py -v --junitxml=test_report.xml artifacts: # 无论测试成功失败都上传报告 when: always reports: junit: test_report.xml
补充说明
- 如果你的测试文件分布在多个目录,直接把执行命令里的
test_sample.py替换成对应测试目录路径即可,不指定路径的话pytest会自动扫描项目下所有符合命名规则的测试文件 - 如果项目需要特定的系统依赖,可以在script段先通过apt安装对应包再执行后续步骤
内容的提问来源于stack exchange,提问作者Jiana
相关产品推荐
相关产品推荐

