自动化工具 cypress 个人编码守则

Jacky · 2020年07月11日 · 最后由 Thirty-Thirty 回复于 2020年07月16日 · 1706 次阅读

** cypress coding notice 个人编码守则 **

  1. 尽量用 cy.get 不用 chain,例如 cy.get().contains cy.get().eq() 等 chain
  2. 将页面封装为类,对任何单页面的修改归结于对一个类的修改,成为 UI 层
  3. 跨页面的操作封装为 API,如 login,logout,openXxxMenu,业务的逻辑修改归结为只对 api 的修改,成为 service 层
  4. 业务对象封装为对象,对上述两层的传入参数只能是对象,不能是属性,成为 data 层
  5. 对数据操作等公用算法封装 api,成为 util 层
  6. 后端的 api 请求封装为类,成为 api 层
  7. 对复杂的 UI 类封装为动态 chainable 类,支持链式调用;对简单的 UI 类封装为 static 类,无需实例化

其它

  1. 用 axios 不用 cy.request
  2. 原则上不允许有 eslint 问题
  3. 待 verify 的 case list 原则上不允许有 case 间相互依赖
  4. 对上述第 3 条而言,环境初始化和数据初始化等非业务 verify case,封装进 init 类型 case,cypress 中使用不同 case 集进行先后调用
  5. cypress 的 command 封装,只针对与特定页面无关操作,例如 getAndClick/ clearAndType,不封装单个页面的序列操作,以便于团队内多人开发
共收到 4 条回复 时间 点赞
Jacky 回复

变更频繁本身就已经不适用自动化测试了,不是 JS 能救的吧

Jacky 回复

等 case 多了你就知道 TS 的类型检查有多重要了。 能在编译期就能检查出非常多的错误来。 而且 IDE 提供的语法提示也很有用。 接口,枚举, 泛型 都是能避免错误的好东西。

孙高飞 回复

在这一点上,我是比较犹豫。

我现在感觉是一个变动不是很剧烈的更加适合用 TS,一个常常变得爹妈不认的用 JS。

等待更多的机会来实践吧。

我觉得大部分内容不仅适用于 cypress, 还适用于其他 UI 自动化实践。 然后我觉得要补充一个比较重要的, 就是要使用 typescript 来实践 cypress,而不是 js

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册