当前位置: 首页 > news >正文

边走边聊 Python 3.8:Chapter 21 CI/CD 自动化测试

Chapter 21:CI/CD 自动化测试

自动化测试不是为了机器,而是为了你能睡得更安稳。本章将带你构建一个可自动运行测试、自动构建、自动检查的流水线,让你的项目真正具备工程化能力。你会发现:当流水线自动跑起来,你的项目就真正活了。


“自动化测试不是为了机器,而是为了你能睡得更安稳。”

第21篇我们把第20篇的测试体系升级成生产级 CI/CD 流水线:每次代码提交或定时执行,自动跑 pytest + coverage,失败立即邮件通知,成功生成 HTML 报告。
本篇全部基于Python 3.8.10 + Win7 旗舰版实测通过,完美适配我们前20篇积累的D:\AutoOffice*知识库项目。
先讲
底层原理*,再讲Win7 实战坑点,最后给出GitHub Actions 自托管 Runner + Jenkins 双方案完整可直接复制的配置,让你的自动化脚本真正“无人值守 + 自动验证”。

1. 底层原理(源码、协议、机制)

CI/CD 核心Continuous Integration / Continuous Delivery,通过Webhook + Runner机制实现。

  • GitHub Actions:基于 YAML 声明式工作流(.github/workflows/*.yml)。
    底层原理:GitHub 收到 push/PR 时触发 webhook → 调度 Runner(虚拟机或自托管) → 执行 steps(shell/Python)。
    源码本质是 GitHub 的 Orchestrator + Docker-like 容器隔离,Runner 用actions/runner(.NET 编写)监听事件。

  • Jenkins:经典 Java 自托管 CI 服务器。
    底层使用Pipeline as Code(Jenkinsfile 或 declarative pipeline),通过 Groovy DSL 描述阶段(stage)。
    Agent(Win7 机器)通过 JNLP 协议连接 Master,执行 Python 命令。

  • pytest + coverage 集成:coverage.py 钩子coverage run -m pytest,生成 .coverage 文件 →coverage html输出报告。
    完全基于 Python 的trace模块和 pytest 的pytest-cov插件,无需额外协议。

(上图:Pytest 与 CI/CD 流水线经典集成流程)

2. Win7 特有实战坑点 & 库兼容性(提前避雷)

  1. GitHub Actions 云 Runner 不支持 Win7:云端是 Windows Server 2022,无法精确复现 Win7 的 UTF-8 日志、路径限制等问题。必须使用自托管 Runner(在 Win7 本机运行)。
  2. 自托管 Runner 权限:Win7 UAC 严格,Runner 必须以管理员身份运行,否则 pyautogui / 文件操作会失败。
  3. Python 版本锁定:在 workflow 中必须指定python-version: 3.8(actions/setup-python@v4 支持 3.8)。
  4. Jenkins on Win7:推荐 Jenkins 2.414(最后一个较稳定支持旧 Windows 的版本)。安装时需 JDK 8(Win7 兼容)。
  5. 中文日志与路径:CI 环境中必须所有脚本强制encoding='utf-8',否则 GitHub Runner(即使自托管)也会报编码错误。
  6. 覆盖率报告:Win7 默认浏览器 IE,HTML 报告打开可能样式错乱,建议用 Chrome。
http://www.jsqmd.com/news/844258/

相关文章:

  • 匀胶机 / 旋涂仪厂家怎么选?行业头部企业与专业生产商全解析 - 品牌推荐大师
  • 聚酯生产高效控质必备!聚酯在线粘度计推荐,可加工定制,交货快且品质有保障 - 品牌推荐大师
  • 2026京东E卡回收渠道横评:处理闲置卡,鼎鼎收到账快效率高还省心 - 鼎鼎收礼品卡回收
  • 新手必看:用PHPStudy在Windows上快速搭建Pikachu靶场(附File Inclusion通关实战)
  • 合肥靠谱犬舍猫舍宠物店推荐,现场挑选安心合肥头部 - 范德萨的得到
  • 【亲测免费】 探索高效PCB设计:FreeRouting插件助力KiCad自动布线
  • 2 code view src\driver\ros_robot_controller\ros_robot_controller\ros_robot_controller_node.py
  • Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施
  • 8.1、网络层—虚电路网络和数据报网络,IP协议的数据报,IP分组的分片,IP编址和IP子网
  • go 基础之基本数据类型
  • 告别马赛克!用Real-ESRGAN一键修复老照片和网络模糊图(附Python/Colab实战)
  • 探索地图切片的利器:MapCutter 3.8.0
  • 2026天津日常黄金回收鉴定小技巧,普通人也能轻松分辨 - 奢侈品回收测评
  • 打造完美WebGL体验:Unity自适应模板资源推荐
  • 【2026图文教程】VirtualBox下载安装教程:一台电脑同时跑多个系统,免费虚拟机怎么用 - PC修复电脑医生
  • 手把手教你用MASM 6.15在Windows 10上跑通第一个汇编程序(附Hello World源码)
  • 5分钟快速上手:LinkSwift网盘直链下载助手终极指南
  • 2026年义乌装修公司甄选指南:全案设计与施工落地深度评测 | 自有施工不转包原创全案设计全屋定制软装一站式配齐法式中古/意式极简/奶油中古/静奢风全风格覆盖 - 企业品牌优选推荐官
  • 合肥宠物价格行情 在合肥这家头部宠物店犬舍猫舍探店 - 范德萨的得到
  • 亨得利正规手表维保门店地址大全(2026年5月版):全国七大官方服务中心精准定位与真假鉴别指南——从百达翡丽到浪琴,你的爱表该去哪里“看病”? - 亨得利腕表维修中心
  • 全面解读瑞祥卡:使用范围、闲置原因及回收妙招! - 团团收购物卡回收
  • 2026年高合规投标必看:云境标书AI的数据安全措施和隐私保护机制全解析 - 陈工0237
  • 告别串口!用STM32F103的GPIO口直接读取LD3320语音模块电平,实现语音控制LED(附完整代码)
  • 长期项目使用 Taotoken Token Plan 套餐的成本控制感受
  • Web转桌面框架实战教程:集成Vue、React和Angular的最佳方案
  • 2026年5月临沂装饰服务商推荐指南:临沂装饰装修公司优选! - 品牌鉴赏师
  • 热熔胶生产粘度精准把控!热熔胶在线粘度计厂家推荐,口碑好、实力强,可定制易选型 - 品牌推荐大师
  • 2026年贵阳地摊创业与百货批发完全指南:从源头货源到摆摊成功的深度评测 - 企业名录优选推荐
  • 盒马购物卡闲置怎么办?回收攻略看这里! - 团团收购物卡回收
  • Python数据类实战:dataclasses深度解析