Jenkins结合自动化测试:让代码上线前自己跑一遍

小王刚改完一个登录页的样式,顺手提交了代码。五分钟后,他收到一封邮件——‘构建失败,UI自动测试发现按钮点击无响应’。他赶紧回看代码,果然漏掉了事件绑定。这不是科幻场景,是很多团队每天都在用的 Jenkins + 自动化测试组合。

为什么非得搭这个‘自动检查员’?

手动点一遍登录、注册、忘记密码……测三遍就手酸;换浏览器再测一遍?时间直接翻倍。而 Jenkins 就像一个不知疲倦的值班程序员,只要代码一推到 Git,它立刻拉下来、编译、跑测试、发报告,整个过程不用人盯屏。

三步搭个能跑测试的流水线

假设你用的是 Python + pytest 做 Web 自动化测试,ChromeDriver 已装好,项目结构长这样:

my_project/
  src/
  tests/test_login.py
  requirements.txt

在 Jenkins 新建任务,选‘自由风格项目’,配置里加几步:

1. 拉代码

源码管理选 Git,填上你的仓库地址和分支(比如 main)。

2. 装依赖 + 跑测试

构建步骤选‘执行 shell’,写这几行:

pip install -r requirements.txt
export DISPLAY=:99
pytest tests/ -v --html=report.html --self-contained-html

注意:如果 Jenkins 是 Linux 服务器且没桌面环境,得先启动虚拟显示(xvfb-run -a pytest ... 或提前配好 xvfb)。

3. 看结果

装个 HTML Publisher 插件,把 report.html 作为测试报告发布。每次构建完点进去,就能看到哪条用例红了、截图在哪、控制台输出啥——比翻日志快多了。

不是所有测试都适合塞进 Jenkins

冒烟测试、核心流程回归(比如下单→支付→发货)建议每次提交都跑;而全量兼容性测试(IE11、Safari旧版等)可以设成每天凌晨跑一次。别让流水线卡在‘等 Safari 启动’上。

有次我们把截图路径写死在 C:\tmp,结果 Jenkins 在 Linux 上跑崩了。后来统一改成 os.path.join(os.getcwd(), 'screenshots'),再配合 mkdir -p,问题当场消失。