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

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

** 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 条回复 时间 点赞

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

孙高飞 回复

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

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

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

Jacky 回复

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

Jacky 回复

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

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