当前位置: 首页 > news >正文

WEB自动化测试(1)—— Cypress 介绍

1. Cypress 介绍

1.1 Cypress 简介

    Cypress是一款基于JavaScript的下一代前端测试工具。可以对浏览器中运行的任何内容进行快速、简单和可靠的测试。
    Cypress是自集成的,提供了一套完整的端到端测试,无须借助其他外部工具,安装后即可快速地创建、编写、运行测试用例,且对每一步操作都支持回看。另外Cypress也支持集成测试单元测试

Cypress 底层协议不采用 WebDriver

1.2 Cypress 原理

    大多数测试工具(Selenium/Webdriver)通过在浏览器外部启动一个代理客户端,再通过网络向代理客户端发送命令来运行。而Cypress则刚好相反,其与应用程序在同一个生命周期里执行。

Webdriver底层通信协议基于JSON Wire Protocol,运行需要网络通信。

    Cypress 的运行流程如下所示:

  • 1.在运行测试程序后,Cypress会首先使用webpack将测试代码中的所有模块放入一个js文件中
  • 2.再启动浏览器,并将测试代码注入到一个空白页面,然后在在浏览器中运行

1.3 Cypress架构图

    Cypress官方并未提供其架构图,根据网络资料整理如下所示:

1.4 Cypress 特性

    Cypress主要特性如下所示:

  • 时间穿梭

    Cypress在测试代码运行时会自动进行截图拍照。待测试运行结束后,用户可以其提供的Test Runner里,将鼠标悬停命令日志中的命令上,查看每一步具体的操作

  • 实时加载

    在测试代码修改后,Cypress可以自动加载改动并重新运行测试

  • Spies/stubs/clocks

    Cypress允许验证和控制测试函数的行为,Mock服务器响应或更改系统时间等

  • 运行结果一致性

    可以保证每次运行的测试结果都一样

  • 可调试性

    在测试结果为失败时,可以直接通过开发者工具进行调试

  • 自动等待

    在使用Cypress时,无需在测试代码中添加wait或sleep等。Cypress会自动等待元素至可操作状态才执行命令或断言。

  • 网络流量控制

    Cypress可以Mock服务器返回结果。无需连接后端服务器即可实现轻松控制。模拟网络请求。

  • 截图和视频

    在测试结果为失败时,Cypress会自动截图,在无GUI界面运行时,会建制整个测试套件的视频,从而可以轻松掌握测试运行情况。今天的分享就到此结束了


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。

相关文章:

  • C#把数据库表里简体字转化为繁体字
  • JAVA计算机毕业设计云音乐后端内容管理系统Mybatis+系统+数据库+调试部署
  • Vue基础之插槽、自定义指令、render函数、过滤器
  • 企业实践开源的动机
  • 【力扣刷题】Day06——哈希表专题
  • 【web】计算机网络编程(重点:UDP数据报/TCP流套接字编程)
  • img2col 卷积优化讲解
  • 微服务SpringBoot+Neo4j搭建企业级分布式应用拓扑图
  • 简述你对RPC、RMI的理解
  • 召回侧对齐精排的多目标打分融合
  • 使用 PyTorch 读取自己的数据集
  • 谷粒学院16万字笔记+1600张配图(十)——课程管理
  • 【Verilog我思我用】-generate
  • 基于Java+SpringBoot+vue+elementui图书管理系统设计实现
  • java web开发(学习路线)
  • 【391天】每日项目总结系列128(2018.03.03)
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Meteor的表单提交:Form
  • Objective-C 中关联引用的概念
  • oldjun 检测网站的经验
  • spring security oauth2 password授权模式
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue:响应原理
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 仿天猫超市收藏抛物线动画工具库
  • 开源SQL-on-Hadoop系统一览
  • 学习HTTP相关知识笔记
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • $().each和$.each的区别
  • (C++17) std算法之执行策略 execution
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (七)Knockout 创建自定义绑定
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)汇编语言——简单程序
  • (原創) 未来三学期想要修的课 (日記)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)母版页和相对路径
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .bashrc在哪里,alias妙用
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .net6 webapi log4net完整配置使用流程
  • .net访问oracle数据库性能问题
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET下的多线程编程—1-线程机制概述
  • .NET值类型变量“活”在哪?
  • .net中调用windows performance记录性能信息