![]() |
奔跑的鸭蛋 · 在onChange事件中获取按钮值 - · 2 月前 · |
![]() |
旅途中的茄子 · 更新SQL子查询 - · 2 月前 · |
![]() |
酷酷的卡布奇诺 · YOLOv5x6模型来了! ...· 1 月前 · |
![]() |
鼻子大的人字拖 · Navicat还原DMP文件步骤-阿里云开发者社区· 3 周前 · |
![]() |
冷静的油条 · pytest自动发送测试报告邮件 ...· 2 月前 · |
![]() |
英姿勃勃的烤面包 · MyBatisPlus对sql多条件查询+函 ...· 6 月前 · |
![]() |
行走的打火机 · SparkSql中,关于Hive表与Parq ...· 9 月前 · |
![]() |
独立的李子 · kafka怎么保证不丢失消息和不重复消费消息 ...· 9 月前 · |
![]() |
路过的洋葱 · Linux环境下使用fcntl实现C语言非阻 ...· 1 年前 · |
每当出一个新的工具,很多人都会跟风学习,甚至盲目的迷信,以至于忽略了其本质,任何工具都有不足之处,对于用户而言,不足是正常的,我们需要了解之,然后在实践中发挥其长处,规避不足,从而实现在企业实践中的最佳实践!!!
下面我们一起学习下Cypress的不足的地方,以便在进一步掌握Cypress,以便出现谜一样的自信。
Cypress是一个优秀的前端测试框架,但其并不保证百分百的承诺保证Cypress API都能精确1:1实现。
这就意味着,有可能出现某些API未能按其说明的进行了实现,当然笔者以为这种可能性及可能带来的风险应该是相对较小的,但使用者应该知道这个现实情况。
Cypress还有那些不足呢?
1. Cypress不能同时(并行地)运行多个命令
2. 使用者不能“意外的”忘记return或chain命令
3. 对于失败的命令,不能添加.catch错误处理
上面3点意味着,我们在应用Cypress进行实践时,要失去一些控制性、一些灵活性。
为什么会有上述3点的限制呢? 更大的根源可能是Cypress意图提供一个创建一致的、可靠的测试,期望这些测试在每次运行时的执行完全相同。
众所皆知的是:凡是软件开发,为了一致性、可靠性,一般都要失去一定的控制性、灵活性,而就这几天笔者学习Cypress的情况来看,这个取舍、权衡是值得的。
我们看下Cypress为什么不能同时(并行地)运行多个命令?
在Cypress中,为了保证确保每次都以相同的方式执行所有命令,很多Cypress命令都会以某种方式改变浏览器的状态。
例如request()命令自动获取并设置与远程服务器之间的cookie;
clearcookies()会清除所有浏览器cookies;
.click()使应用程序对单击事件作出响应。
而上面的命令都是不是幂等的,它们都是有副作用的,所以Cypress的命令必须以受控的、串行的方式运行,这也就说明了为什么不能同时(并行地)运行多个Cypress命令。
我们看下对于失败命令,为什么不能添加.catch错误处理?
在Cypress中,对于失败的命令,没有内置的错误恢复功能。一个命令和它的断言最终都通过,或如果一个失败,则所有剩余的命令都不运行,测试失败。
注:这个机制,让我想起了2012年时,我开源的的goose入门测试框架,也是遵循这个基本原则,一个失败则后续命令全部不运行!!!
对于刚学python进行自动化测试的人员,可以尝试看看goose入门测试框架,一个很简单的入门级框架,针对零基础的人员而写的。
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券
![]() |
奔跑的鸭蛋 · 在onChange事件中获取按钮值 - 2 月前 |
![]() |
旅途中的茄子 · 更新SQL子查询 - 2 月前 |
![]() |
鼻子大的人字拖 · Navicat还原DMP文件步骤-阿里云开发者社区 3 周前 |