GitLab CI/CD中pytest无法识别test_*脚本及覆盖率收集失败问题
问题原因及解决方法
核心问题:路径不匹配导致Coverage无法收集数据
可能的原因及对应解决方案:
工作目录与路径参数不匹配
你在CI中使用测试目录的绝对路径执行pytest,但--cov=src是相对当前工作目录的路径。如果CI的当前工作目录不是项目根目录(/builds/cdf/Platform/onprem-core-functions/),Coverage会找不到src目录,导致无数据收集。
解决:先切换到项目根目录,再用相对路径执行命令:cd /builds/cdf/Platform/onprem-core-functions/ pytest tests/ --cov=src --cov-report xml:coverage/cov.xml --cov-branch测试脚本无法正确导入业务模块
当测试放在tests目录时,Python默认的模块搜索路径可能不包含项目根目录,导致测试脚本无法导入src下的业务代码,测试实际没执行到业务逻辑,Coverage自然无数据。
解决:在tests目录下创建conftest.py文件,添加以下代码将项目根目录加入Python路径:import sys from pathlib import Path sys.path.append(str(Path(__file__).parent.parent))测试目录路径拼写错误
你提到测试脚本放在tests目录,但CI命令中写的是/builds/cdf/Platform/onprem-core-functions/test/(缺少一个s),如果实际目录是tests,pytest会找不到测试用例,导致Coverage无数据。
解决:检查并修正CI命令中的测试目录路径,确保和实际目录一致。
内容的提问来源于stack exchange,提问作者Vishal Agarwal
相关产品推荐
相关产品推荐

