• 1
  • 0
分享
  • 【自动化】Cypress-Web UI自动化的完美解决方案
  • 瑾沐沐 2022-06-30 11:08:31 字数 3129 阅读 4660 收藏 0

沐沐一直在思考UI自动化有用吗?毕竟UI自动化的投入产出比(ROI)实在太低。对于测试人员而言,UI自动化就像是一个装备,升级打怪不一定用的到这个小装备,但是没有这个装备就会被鄙视。因此从投入的角度分析,选择UI自动化框架时,尽量选择学习成本和维护成本的较低的框架;从产出的角度而言,脚本需要产生效益,就需要更多的受众去使用;如果一定要选择一种UI自动化框架,沐沐一定会选择Cypress。Cypress是基于node.js环境的,安装则极为便利,如果我们测试人员维护好了自动化脚本,就可以直接将js脚本分享给研发人员,辅助研发人员进行自测。如果能将UI自动化普及到整个部门都去使用,辅助提升产品研发效率,那UI自动化就是非常有价值的事情。

一、Cypress简介

  • 官网地址:https://docs.cypress.io

  • 官网的首页有一句标语“The web has evolved.Finally, testing has too.”意思是Web已经进化了,最终,测试也是。

  • 而对于Cypress的介绍则是“Fast, easy and reliable testing for anything that runs in a browser.”翻译为“对浏览器中运行的任何内容进行快速、简单和可靠的测试”。

  • Cypress是一种E2E测试框架,即end to end测试。同类型的框架还有Testcafe 等。但是E2E测试似乎是比较冷门的模块,而Cypress使得E2E测试更加简单。Cypress框架安装成功后,example文件中还有很多的demo,有助于我们更快的了解和学习该框架。Cypress也可以说是web UI自动化的完美解决方案。

二、Cypress的优势

  •  安装简单:毫不夸张的说,在网络正常的情况下,10分钟就可以安装好Cypress框架,一天则可以入门,写一些简单的用例。

  • 运行速度快:相较于Selenium来说,Cypress的运行速度真的是相当快了,它不需要web driver来驱动浏览器。

  •  脚本实时调试:在脚本编写过程中,只要编辑器中进行保存,脚本就会自动运行,可以快速高效的知道脚本是否正确。

  • 兼容性测试:目前Cypress已经支持Chrome和Firefox两款主流浏览器,在GUI界面可以非常便捷的切换浏览器进行兼容性测试。

  • 失败用例自动保存截图:脚本运行失败后,会在..\cypress\screenshots文件夹下面自动保存失败用例的截图,方便我们追踪道失败用例的原因。

  • 运行过程自动录制视频:脚本运行完成后,会在..\cypress\videos文件夹下自动保存脚本运行过程录制的视频。

三、Cypress环境搭建

  • 安装node.js

    1、官网下载地址:https://nodejs.org/en/download/

    2、傻瓜式安装,安装后查看是否成功:node –v

    3、最新版的node在安装时同时也安装了npm,查看npm版本:npm -v

    4、具体安装步骤参考菜鸟教程:https://www.runoob.com/nodejs/nodejs-install-setup.html

  • 安装Cypress

    1、cmd进入命令行模式,进入D盘创建一个文件夹:mkdir Crypress_project

    2、进入新创建的文件夹下面:cd Crypress_project

    3、初始化项目:npm init -y

    4、安装cypress:npm i cypress -S -D;安装成功截图如下:

222222222222222222.png

  • 配置package.json

    1、打开 Crypress_project路径下的package.json文件,将里面的内容全部删除,复制上去以下代码:

{
  "scripts": {
   "cypress": "cypress open"
  }
}
  • 运行Cypress

    1、运行命令: npm run cypress

    2、Cypress窗口正常打开不报错,即环境安装成功。

    3、examples中是Cypress提供的demo,点击即可运行,如下图:

3333333333333333333.png

四、Cypress报告配置

  • 安装mochawesome

    1、mochawesome安装说明:mocha必须指定 7.1.1, 否则会报错。

    2、安装命令:

    npm install --save-dev mocha@7.1.1 mochawesome mochawesome-merge mochawesome-report-generator

    3、配置cypress.json文件,代码如下:

{
  "reporter": "mochawesome",
  "reporterOptions": {
    "overwrite": false,
    "html": true,
    "json": true
  }
}
  • 配置生成报告的脚本

   1、在cypress同级目录下新增scripts文件夹,文件夹下面新增cypress.js,代码如下:

{
    const cypress = require('cypress');
    const fse = require('fs-extra');
    const {merge} = require('mochawesome-merge');
    const generator = require('mochawesome-report-generator');
    async function runTests() {
        await fse.remove('mochawesome-report');
        const {totalFailed} = await cypress.run();
        const jsonReport = await merge();
        await generator.create(jsonReport);
        process.exit(totalFailed)
    }
    runTests()
}
  • package.json文件添加启动脚本

   1、package.json文件添加启动脚本,代码如下:

{
"scripts": {
  "cypress": "cypress open",                 //正常运行cypress的命令
  "report": "node scripts/cypress.js"    //运行生成mochawesome报告的命令
},
}
  • 报告模式运行 

   1、运行命令:npm run report;运行过程截图如下:

4444444444444.png

  • 查看报告详情

   1、打开报告路径:..\Crypress_project\mochawesome-report\.......报告截图如下:

55555555555555.png

也许有些同学会觉得自己熟悉的语言是python,并不熟悉js,所以不会去尝试这个框架,其实完全不用担心,沐沐也不会js,但是沐沐会百度、会copy、会一点英语,就已经足够去写正常的UI 自动化脚本了。适合自己产品的才是最好的。沐沐工作中使用的前端框架是vue,所以调研了很多UI自动化框架后,Cypress无疑是最好的选择。当然并不是所有的产品或者项目都适合自动化,但是工作中存在手工重复的痛点时,就要考虑用自动化的方式去解决,这才是自动化存在的意义。

The more we share,The more we have.

希望这篇文章对大家有用...

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   2023年第一个工作日,乐视CEO张巍通过全员信宣布:2023年1月1日起,公司将执行每周4天半工作制,即每周三实行弹性的半天工作制,考勤时间调整为连续的5小时。  据中国企业家消息,针对“实行每周四天半工作制”的情况,乐视市场部负责人表示,关于此次工作制的调整,很久以前就在考虑了,包括考虑更灵活的打卡制度。同时,员工正常的薪资福利和奖金都不变。  “乐视这家公司比较特殊,员工承受了很多来自外界的压力,之前很多员工都不敢说在乐视上班。”乐视方面称,这一次也并不是想要引领其他互联网公司或者其他公司去做制度改变,“我们自己知道其实是没有影响力的,我们只是想做好自己,提升员工的幸福感、认同感。”...
            0 0 962
            分享
          •   周六,美国宇航员巴里-威尔莫尔(Barry Wilmore)致电美国国家航空航天局(NASA)地面工作人员,请求帮助解决从波音"Starliner"飞船上发出的重复敲击声。美国国家航空航天局太空飞行论坛的一名成员捕捉到了这次互动,并在Ars Technica发现的一篇帖子中附上了录音。  "我有一个关于'Starliner'的问题,"威尔莫尔通过无线电向休斯顿约翰逊航天中心的任务控制中心报告。"扬声器里传出了奇怪的声音......我不知道是什么发出的。"  威尔莫尔说,他不确定是空间站和航天器之间的连接出现了异常,...
            0 0 368
            分享
          •      前两篇文章中沐沐为大家介绍了用faker库批量生成企业信息、用户信息的方法;批量生成1w条数据到Excel表格,如果需要录入系统的话,又需要通过界面导入、JMeter的csv参数化导入、数据库导入等方式,会较为繁琐。如果大家熟悉数据库表结构的话,就可以使用pyhon脚本直接将批量造好的数据导入数据库。必须要强调的是,python操作数据库之前,提前先备份好对应的表,以免操作失误后还可以还原数据。     以下代码为批量生成企业数据后直接插入mysql数据库的举例:# 批量造数据导入mysql from f...
            4 2 3831
            分享
          • 作者:何文斯 - Vince,LLM 应用研究者,Dify 团队产品经理,对 LLM 应用、Embedding、LangChian 等保持持续关注和深度研究。大语言模型之上的应用层面有三项技术需要理解:提示词工程(Prompt Engineering);嵌入(Embedding);微调(Fine-tuning)。其中 Embedding  作为大语言模型理解文本语义的重要技术,在搜索引擎、构建私有知识问答系统、内容推荐系统等都有相当广泛的应用。本文作为我的一篇个人技术笔记在整理了一周后分享到公众号内。Embedding 的基本概念什么是 Embedding,OpenAI 官方文档中是...
            0 0 1376
            分享
          •   K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。  k6 可用于测试各种应用程序,包括 Web 应用程序、API 和微服务。它还可用于模拟真实的流量模式,并且可以生成报告,帮助您识别瓶颈和性能问题。  k6 的主要功能之一是它基于“测试即代码”的概念。这意味着您可以使用 JavaScript 编写负载测试,这使得它们易于共享和协作。K6 还包括许多内置功能,可以轻松编写复杂的测试,例如模拟用户行为、生成随机数据和跟踪性能指标的能力。  k6的另一个关键特性是它被设计为可扩展的。您可以在本地...
            0 0 1323
            分享
      • 51testing软件测试圈微信