这是一个用于 Python 项目特别是 FastAPI 风格项目的 Bash 脚本用于一键执行测试并生成覆盖率报告。其核心功能、配置和使用方法如下核心功能与特性功能模块具体实现说明环境检查检查 Python 版本及pytest,coverage,pytest-cov,pytest-timeout依赖确保测试环境就绪。参数解析--full(运行全部测试)--ci(CI模式)--help(帮助)支持不同场景的运行模式。测试执行调用pytest集成pytest-cov插件生成覆盖率数据执行测试并收集覆盖率。报告生成生成HTML报告、终端摘要和LCOV文件提供多格式结果输出。覆盖率门槛设置--cov-fail-under75覆盖率低于75%则失败强制执行质量门禁。测试过滤默认跳过标记为slow的测试--full模式下运行全部平衡测试速度与完整性。关键配置解析脚本通过构建pytest命令集成覆盖率工具核心配置如下# 构建 pytest 命令的核心逻辑build_pytest_cmd() { local cmdpytest cmd$cmd -v --tbshort --strict-markers # 标记过滤默认跳过 slow 测试 if [ $FULL_MODE true ]; then cmd$cmd -m else cmd$cmd -m not slow fi # 覆盖率报告配置生成HTML、终端缺失行显示、LCOV文件 cmd$cmd --cov-reporthtml:$REPORT_DIR cmd$cmd --cov-reportterm-missing cmd$cmd --cov-reportlcov:$COVERAGE_DIR/lcov.info # 指定需要计算覆盖率的源码路径 for src in ${SOURCE_PATHS[]}; do cmd$cmd --cov$src done # 设置覆盖率失败门槛为75% cmd$cmd --cov-fail-under75 # 设置超时和最大失败数 cmd$cmd --timeout300 if [ $CI_MODE false ]; then cmd$cmd --maxfail5 else cmd$cmd --maxfail1 fi echo $cmd }使用方法直接在脚本所在目录执行# 快速模式默认跳过慢速测试 ./run_coverage.sh # 完整模式运行所有测试包括慢速测试 ./run_coverage.sh --full # CI 模式精简输出严格失败条件 ./run_coverage.sh --ci# 查看帮助 ./run_coverage.sh --help输出结果终端摘要显示测试通过/失败状态及行覆盖率百分比 。HTML 报告生成在coverage/html/目录下可通过浏览器打开index.html文件进行交互式查看详细展示每个文件的覆盖情况、未覆盖行号等 。LCOV 文件生成coverage/lcov.info文件可用于与第三方工具如 SonarQube集成 。脚本设计亮点工程化封装将复杂的pytest和coverage命令行参数封装为简单的脚本调用降低使用成本 。环境隔离脚本内切换工作目录至SCRIPT_DIR并创建独立的coverage/目录存放结果避免污染项目根目录。友好的交互在非 CI 模式下提供彩色输出、下一步操作提示提升了开发者体验。CI/CD 就绪通过--ci参数提供适合持续集成环境的安静输出和更严格的失败条件--maxfail1。与参考资料的关联实践此脚本是参考资料中所述最佳实践的完整实现它使用pytestpytest-cov作为测试和覆盖率收集工具链 。它生成了终端和 HTML 两种格式的覆盖率报告后者便于可视化分析 。它通过--cov-fail-under设置了明确的覆盖率质量门禁 。它通过标记slow对测试用例进行了分类管理支持快速反馈与深度测试的切换 。参考来源FastAPI测试覆盖率报告生成HTML结果的完整指南FastAPI测试覆盖率完整指南与报告生成技巧mac电脑pytest生成测试报告FastAPI测试覆盖率实现配置FastAPI测试覆盖率终极配置与实现指南