cypress-file-upload 是什么
之前有写过一遍博客大致介绍了cypress是什么:前端e2e测试框架(歪果仁开发)。
最近因为有个项目因为改版的原因,差不多到上线的节点了,所以还是希望把测试维护起来。e2e实际上就是end to end 嘛,你如果直接理解为验收测试也不为过。众所周知咯,维护前端测试实际上是一件很麻烦的事情,因为有复杂的业务、复杂的UI交互,人工测试实在是太耗时费力(成本),另外前端项目是比较不那么stable 的。因为前端样式是可能时常变化的,今天断言的这个按钮是红色、明天可能是白色了。所以对于小型公司来说的话,建议是在一个stable 的阶段去维护比较有收益,最近的项目改版就是一个有力的例子。V1版本维护了一套stable的测试用例,突然说需要改版,基本是换肤,对于UI来说基本是不一致的了,这导致之前维护的版本的测试基本是需要重新维护的了。
为什么要使用cypress-file-upload
前端很多场景是需要上传文件的,最通常的就是上传图片。也就是说我们写测试的过程中,例如填写一个表单,需要上传图片,然后才能提交到后台。所以我们是需要模拟上传图片的,简单来说就是把这个事情自动化,本来我们就是自动化测试嘛。之前也写过一些cypress简单的用例,但是上传图片之前没去琢磨过,于是我就去gayhub疯狂的search issues ,大致关键词就是:”cypress how to upload file”。果不其然,还是挺多歪果仁提过这个issue的,所以我就大致认真的看了一下,因为都是英文,所以还是得认真的去消化 :)。我发现了一个关键的issue:https://github.com/cypress-io/cypress/issues/170 然后摸石头过河,发现有些朋友贴出的好的idea :cypress-file-upload , 直接npm install - -save -dev cypress-file-upload 就可以,具体可以直接Google咯。
首先先 npm 安装 cypress-file-upload 哦
大致的用法是,这里贴一下代码块:
1 | /** |
有几点注意的:
- uploadFile是自己封装的func,需要统一放在commands.js [官方提供的diy func]
- 此时直接使用cy.get(…).upload(‘’) 是会报错的 找不到upload 方法,我们需要在commands.js 引入 import ‘cypress-file-upload’ ,之前我也以为npm 安装了即可,但是后来去gayhub 发现需要在commands import一次
最后大功告成咯 : ) ci 上跑了一波 没啥问题 大功告成 cypress真的香哦