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

Jacky · July 11, 2020 · Last by Thirty-Thirty replied at July 16, 2020 · 956 hits

** 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

Jacky #2 · July 15, 2020 作者
孙高飞 回复

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

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

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

Jacky 回复

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

Jacky 回复

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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up