公司要求搭建 UI 的自动化测试,我用的 pytest+Python3+ChromeDriver+selenium,现在写了几百个 case,但是遇到了很多问题,并且执行时间很长,我搜索了很多的网站,但是并没有搜索到针对我的问题而言很有用的资料,所以在这里发帖求助,看看大家是否有什么思路可以供给我,万分感谢
问题:
1、抛开连接 SQL 外,有什么其他好的方法回收么?公司不允许我这边连接生产的库,所以我在 case 中手写的数据回收,如在 case 中建数据 A,依据 A 执行用例,而后删除 A,这样有个隐患就是一旦 case 执行失败了,那么后续数据回收的步骤也全部受到影响,导致我这边的环境会有大量的垃圾数据,因为系统之中有些垃圾数据影响是全局的,会影响其他使用同样的用例,从而造成连锁反应,导致用例成功率不稳定,忽上忽下的,并且执行完成后还需要手动删除垃圾数据。
2、公司做的是 ToB 的 Web 端 SaaS 服务,用域名 + 用户账号来进行分离,并且账号不允许多端登录,如何进行并发?之前是单线程执行,现在希望提速,我准备用 redis,每次执行自动化测试时,将这些账号放到 redis 账号池中,每个用例从池子中取出账号后,将其状态标识为不可用,后续的 case 不能使用该账号,只能选取其他账号,case 执行完成后,释放该账号,将其状态变为可用,我不知道这样是不是最佳实践,但是目前能解决我的困境,如果有好的方案,希望可以和我分享
3、系统中存在的 ajax 请求、异步操作的情况下,如何提高 UICase 的成功率?比如 A 账号登录后,更新其某个状态,这里面会有一些异步操作,比如 MYSQL、ES 的读写,触发相关服务的 sidekiq 操作等,因为在异步操作执行期间,前端会有一个状态变更成功的假象,所以用 UI 定位状态变更成功,但是后续执行时可能会导致异步操作没有处理完,状态更新操作执行后,后端数据没有更新完毕,导致 case 执行失败,在这些问题上,我现在迫不得已用 sleep 来解决的,ajax 的请求也一样,我不知道是否有更优的解决方案,这很困扰我,同时也影响了 case 的成功率及执行速度

现在我在优化我自己的框架,但是思路很混乱,我不知道这样做是对是错,网上包括 GitHub 中的框架都很简单,我找不到太多和我类似的情况的问题


↙↙↙阅读原文可查看相关链接,并与作者交流