GitLab CI中启动Flask服务执行测试遇模块错误求助
解决GitLab CI中Flask自动化测试的模块错误问题
问题根源
你用python3 -m app.py启动Flask服务是错误的——-m参数是用来运行Python模块(不带.py后缀)的,直接执行脚本应该去掉这个参数。另外,直接运行app.py会阻塞后续的测试命令,必须把服务放到后台运行,同时要等服务完全启动后再执行测试。
修正后的.gitlab-ci.yml配置
image: ubuntu:18.04 stages: - test test: stage: test script: - apt-get update -qy - apt-get install -y python3 python3-pip curl - pip3 install requests flask - cd src # 后台启动Flask服务 - python3 app.py & # 等待服务启动成功(最多等30秒,每2秒检查一次) - timeout 30s bash -c 'while ! curl -s http://127.0.0.1:8006 > /dev/null; do sleep 2; done' # 执行测试 - python3 -m unittest test
关键改动说明
- 启动命令从
python3 -m app.py改为python3 app.py &:去掉-m符合脚本运行规范,&让服务在后台运行,不阻塞后续测试命令执行。 - 添加
curl安装和等待逻辑:确保Flask服务完全启动就绪后再跑测试,避免因服务未初始化完成导致测试失败。 - 保留原有的依赖安装、测试命令逻辑,仅调整启动相关步骤。
额外优化建议
如果你的Flask项目有更多依赖,建议在项目根目录创建requirements.txt文件,把所有依赖列进去:
flask requests
然后把CI脚本里的pip3 install requests flask改成pip3 install -r requirements.txt,这样更简洁,也能避免漏装依赖。
内容的提问来源于stack exchange,提问作者Surly Knott
相关产品推荐
相关产品推荐

