12 PO 模式的核心思想是什么?设计上有什么原则?
2026/9/8...大约 2 分钟
12|PO 模式的核心思想是什么?设计上有什么原则?
开场一句话定义先立住:每个页面抽象成一个类,页面里的元素和操作都封装在类里,用例只调用方法不看实现——页面对象就是页面的代码化替身。
回答思路
第一步:讲它解决的问题
定位器和用例逻辑解耦:页面改版只改页面对象一处,几十条用例不动。没有 PO 的自动化,一次 UI 改版等于全量重写——这就是大多数 UI 自动化烂尾的根因。把这个因果讲出来,说明你懂 PO 是为什么活着的。
第二步:报设计原则
- PO 类不做断言——断言留在用例层,页面类只管操作不管对错
- 方法返回页面或区域对象——链式表达业务流
- 一个页面一个类,页面里的独立区块(导航栏、弹窗)单独建组件类组合进来
这些原则能说出两三条就是老手。
第三步:讲和工厂、fixture 的配合
页面类的实例化交给基类或工厂统一管理,避免用例里到处 new;配合 conftest 里的 driver fixture 传递,整个框架的层次就立起来了。
收尾:讲反面
PO 不是把用例步骤原封不动搬进方法(那是伪 PO)——方法应该是业务语义的(登录、加购物车)而不是操作语义的(输入、点击)。伪 PO 是最常见的落地错误,主动指出它很加分。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | PO 是 UI 自动化框架的事实标准,企业用它判断你是「会写脚本」还是「会建框架」——这一题答不好,测开岗基本无缘 |
| 过线标准 | 定义清楚 + 解耦价值讲到维护成本 |
| 区分度 | 讲设计原则(不做断言、组件拆分)和「伪 PO」反例的是深度实践者;只会「一个页面一个类」的是入门水平 |
| 加分项 | 主动点出烂尾根因和伪 PO 反模式 |
| 减分项 | 把 PO 说成「分层写代码」这种含糊表述,没有对象抽象的概念 |
来源
整理自知识星球帖《面试情报 03|自动化测试 20 题》,返回题库。