Pytest+PO 框架搭了 3 次才踩明白的坑,给新手避坑!

说实话,刚开始自学 Pytest 搭 Page Object 框架时,完全是两眼一抹黑,照着网上教程搭了第一版,结果跑通是跑通了,但维护起来分分钟想弃坑。前后重构 3 次,终于把最影响心态的几个坑趟平了,今天纯分享给刚入门的兄弟,都是实打实的血泪教训! :thought_balloon:

1. 全局变量千万别乱堆

一开始图省事,把登录 token、环境地址、账号密码全扔全局变量里。刚开始单线程跑没毛病,后来加了多线程并行,直接串数据了 ——A 用例改了 token,B 用例拿过去就报错,用例结果全乱套。后来换成用fixture做会话级共享,登录态单独封装,每个用例独立拿,才彻底解决这问题。新手千万别偷懒,别把所有东西都塞全局变量。

2. 元素定位别全写死在 Page 层

最开始把所有元素定位、操作全塞 Page 类里,比如登录页的账号输入框、密码按钮,全在 LoginPage 里定义。结果页面稍微改个 class、换个 xpath,全量用例都要改,维护成本直接爆炸。后来改了思路,Page 层只放通用操作,比如点击、输入,定位策略抽成单独的配置或常量,页面结构变了只改配置,不用动业务用例,省心太多。

3. 用例之间必须彻底独立

之前贪省事,让用例互相依赖,比如登录用例先跑,后续用例直接拿登录态跑。结果换个执行顺序,或者登录用例先失败,后面全挂,排查起来头都要炸。现在每个用例都做独立前置,不依赖其他用例,哪怕多跑几步前置,至少结果稳,不会出现 “随机翻车” 的 flaky 用例。

4. 日志和截图一定要打全

刚开始嫌麻烦,日志只打关键步骤,失败也不截图。后来用例报错,根本找不到是参数错了、环境问题还是代码 bug,全靠瞎猜。后来加了详细日志,把请求参数、响应结果、关键步骤全打出来,再配上失败自动截图,排查问题速度直接翻倍。

都是踩了无数坑才总结出来的,有没有刚学 Pytest+PO 的兄弟?你们踩过哪些离谱的坑?评论区交流交流,互相避坑 :raised_hands: