一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
前言
上篇文章我们讲了为什么要进行自动化测试,如何选择自动化测试框架以及为什么选择cypress。本篇文章我再来说说用例代码的最佳实践。仅是个人见解,不足之处还请提出来。
测试用例编写推荐
- 每次代码提交前都需要补充自己需求所用的case
- 根据qa 给出的自测checklist,编写5条以上影响主流程上的 test case。
- 测试用例失败的情况,需要及时定位原因解决,需求变动导致的case 失败,需要及时更新。
- 涉及到用户名密码的话,可以使用测试账号、加密存储本地,或存apollo或者hydra等
用例代码最佳实践
- 合理管理测试用例尽量不要依赖UI去做登录,命令式去做登录
- 不要使用易改动的选择器来选择元素,推荐使用专门用来做UI测试的具有统一前缀的选择器,比如data-cy="login-btn" ,与业务逻辑解耦。
- 不要试图去保存、修改选择器的返回值,命令都是异步执行的,会自动等待。
- 只测试在自己控制范围之内的事情,尽量避免访问第三方服务等
- 保证测试用例相互独立,不共享数据
- 可以将多个断言都写在一个测试用例中,而不是像单元测试一样,写多个测试,因为性能上考虑,切换上下文成本较高
- 将状态重置操作,放在每个test之前做,比如放在beforeEach,而不是 afterEach。cypress会在测试用例跑完后自动清理现场。
- 不需要手动的去等待页面的ready或者所选择元素的ready
- 如果真的需要依赖一个其他的服务,在运行测试用例前,新保证启动该服务。
- 推荐在配置文件中,设置一个默认的baseUrl,而不是手动的去visit(), 这样会节省启动阶段耗时。如果没有指定一个baseUrl,cypress会自动启动一个本地服务,访问localhost:随机端口。
实际业务中积累的经验
- 针对业务中根据接口请求数据决定UI,可以先拦截接口请求,根据接口数据来对UI展现情况添加断言。
- 接口超时怎么办?添加超时时间。添加超时时间意味着环境中的接口是比较慢的,也就是线上接口也可能有同样问题。很可能有线上访问失败case。
总结
本文描述了我个人以及所在团队在使用cypress的一些实践与经验,更加详细的描述信息 可见最佳实践文档