2024Cypress自动化测试开发指南!

news2024/11/16 20:53:16

cypress是基于JavaScript语言为编写语言的自动化测试开发工具,配合使用cucumber测试开发框架,以node.js为服务进程,可以简单的帮助测试人员完成需要人工手点的所有页面人机交互操作,可以模拟键盘和鼠标输入,快捷完成case的测试。

cypress提供了官方API调用文档,可以帮助开发者快速入门:

cypress开发文档 :https://docs.cypress.io/api/table-of-contents

01、cypress安装教程

(MacOS版本)

安装前准备

需要node.js 12 or 14 版本

注意:

在安装之前一定要先初始化npm npm init,需要自行设置参数或者npm init -y

安装方式

通过npm安装Cypress

cd /your/project/path

npm install cypress --save-dev

这将在本地安装Cypress作为项目的开发依赖项。

注意:

确保你已经运行过npm init或者有node_modules文件夹或包package.Json文件,以确保cypress安装在正确的目录下。

通过yarn安装Cypress

cd /your/project/path

yarn add cypress --dev

直接下载Demo

下载地址:https://download.cypress.io/desktop  可以指定版本:https://download.cypress.io/desktop/6.8.0

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

安装后使用

1、直接启动

在代码编写完毕之后,可以通过在项目根目录下,直接启动:在你的项目根目录下执行以下命令:

./node_modules/.bin/cypress open

或者

$(npm bin)/cypress open

或者

npx cypress open

或者

Or by using yarn

打开后显示cucumber插件安装

npm安装

npm install --save-dev cypress-cucumber-preprocessor

配置:

1. 添加到cypree插件

vim cypress/plugins/index.js const cucumber =

require(‘cypress-cucumber-preprocessor’).default module.exports = (on,

config) => { on(‘file:preprocessor’, cucumber()) }

2. 在Cypress配置中添加对功能文件的支持

vim cypress.json

{

testFiles”: “**/*.feature”

}

3. 请使用cosmiconfig为插件创建一个配置,例如,通过添加这个部分到你package.json:

vim package.json

#追加到package.json “cypress-cucumber-preprocessor”: { “nonGlobalStepDefinitions”: true }

2、官方Demo直接运行

demo地址:https://github.com/TheBrainFamily/cypress-cucumber-example

注意:

下载后使用ide打开,若没有npm,安装后即可

3、Ide插件安装

图片

安装后重启idea

02、cypress的基础配置

插件支持配置——package.json文件配置

图片

package.json中将会指明当前文件版本、使用的cucumber框架版本、cypress测试工具版本、所需要的支持插件名称以及版本号,以及测试时的主文件,这很重要,决定你写的cypress代码能否运行,并且需要你在cypress/plugins/index.js写入

const cucumber = require('cypress-cucumber-preprocessor').default

module.exports = (on, config) => {

  on('file:preprocessor', cucumber())

}

这样才可以使cucumber插件生效,cucumber框架将为我们标准化开发cypress自动化测试提供帮助

cypress.json配置及详解

在实际使用cypress过程中,cypress是支持直接对js文件直接运行的,但如果所写的自动化测试代码在不同的文件,当启动测试时需要在不同的文件间切换,每次切换需要重启浏览器,这使得测试过程显得十分臃肿,cucumber建议:可以通过创建.features文件来利用这一点。您可以选择在目录的根目录cypress/integrations或每个目录中创建唯一的一个文件。

创建一个cypress工程

首先创建一个node项目,对package.json文件进行配置,

除了必要的cypress、以及cypress生成错误报告要使用的mochawesome自定义报告生成器,其他依赖可以根据个人需求在package.json中编辑,再运行npm install,npm将会自动生成cypress的工程结构和所需依赖。

当然使用上述安装方式也可也直接实现cypress的创建,但建议使用npm统一创建,统一管理。随后就可以我们的标准化开发了!

以下是一个简单的cypress自动化测试示例,用于测试一个简单的网页登录功能:

describe('登录功能测试', () => {
  it('访问登录页面', () => {
    cy.visit('https://example.com/login')
  })

  it('输入用户名和密码', () => {
    cy.get('input[name="username"]').type('testuser')
    cy.get('input[name="password"]').type('password123')
  })

  it('点击登录按钮', () => {
    cy.get('button[type="submit"]').click()
  })

  it('验证登录成功', () => {
    cy.url().should('include', '/dashboard')
    cy.get('.welcome-message').should('contain', '欢迎回来,testuser')
  })
})
在这个示例中,我们使用cypress编写了一个测试套件,包括访问登录页面、输入用户名和密码、点击登录按钮以及验证登录成功这四个测试步骤。通过这个示例,可以看到cypress的简洁语法和强大功能,使得编写自动化测试变得非常容易和高效。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++STL之map、set的使用和模拟实现

绪论​: “我这个人走得很慢,但是我从不后退。——亚伯拉罕林肯”,本章是接上一章搜索二叉树中红黑树的后续文章,若没有看过强烈建议观看,否则后面模拟实现部分很看懂其代码原理。本章主要讲了map、set是如何使用的&am…

qemu搭建arm64 linux kernel环境

一、环境准备 ubuntu 22.04 内核源码:linux-6.6.1 (直接上最新版) 下载链接:The Linux Kernel Archives 交叉编译工具链: sudo apt-get install gcc-12-aarch64-linux-gnu 具体能用的版本gcc-XX-arch64-linux-gnu…

Demo: 前端生成条形码并打印

前端生成条形码并打印 安装依赖&#xff1a; npm i print-js // 打印 npm i jsbarcode // 生成条形码 <template><div id"printContent" style"display: none;"><div id"elTable"><div class"name">名称&…

SpringBoot + Mybatis 快速入门实战

一.创建Spring项目 出现报错的话&#xff0c;换一个jdk创建&#xff0c;一般java 8 选择Spring Web 测试一下 默认端口8080&#xff0c;但是Vue也需要8080&#xff0c;因此&#xff0c;后端设置一个端口3000 再次测试&#xff0c;成功 此处&#xff0c;如何kill一个端口占…

人生,就是一场断舍离

常言道&#xff1a;“尽人事&#xff0c;听天命。”人世间&#xff0c;除了生死皆是小事&#xff0c;不必过度留恋&#xff0c;不必消耗自己&#xff0c;当你不懂得断舍离&#xff0c;你会发现&#xff0c;人生会痛苦不少。有时候&#xff0c;我们不会被难题所击倒&#xff0c;…

一键部署私有化的思维导图SimpleMindMap

简介 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性&#xff0c;包含插件化架构、多种结构类型&#xff08;逻辑结构图、思维导图、组织结构图等&#xff09;、节点内容支持文本、图片、图标、超链接等&#xff0c;支持拖拽、导入导出功能、快捷…

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test()&#xff0c;并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…

最新GPT4.0使用教程,AI绘画-Midjourney绘画,GPT语音对话使用,DALL-E3文生图+思维导图一站式解决

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

【C++杂货铺】详解类和对象 [中]

博主&#xff1a;代码菌-CSDN博客 专栏&#xff1a;C杂货铺_代码菌的博客-CSDN博客 目录 &#x1f308;前言&#x1f308; &#x1f4c1; 类的6个默认成员函数 &#x1f4c1; 构造函数 &#x1f4c2; 概念 &#x1f4c2; 特性&#xff08;灰常重要&#xff09; &#x1f4c…

用友U8接口-部署和简要说明(1)

概括 本专栏文章目的说明对目前用友U8ERP接口介绍对底层接口二次封装的介绍 说明 过去发布过介绍U8接口文章简介&#xff0c;参考以下链接。 U8接口开发方式 本专栏文章与下面的HTTP接口相辅相成&#xff0c;主要是写给正在使用&#xff0c;或未来使用本套接口的开发人员&am…

Harmony的自定义组件和Page的数据同步

在开发过程中会经常使用自定义组件,就会遇到一个问题,在页面中引入组件后,如何把改变的值传递到自定义组件中呢,这就用到了装饰器,在这是单向传递的,用的装饰器是@State和@Prop @State在page页面中监听数据的变化 @Prop在自定义组件中监听page页面传递过来的变化值,并赋…

关于开展人工智能从业人员“计算机视觉处理设计开发工程师”专项培训(第二期)的通知!

近日我们刚刚结束了《计算机视觉处理设计开发工程师》证书第一期培训&#xff0c;培训效果良好&#xff0c;所有学员均通过工信部统一线上考试&#xff0c;坐等证书了。鉴于学员们的反应我们第二期课程如约而至。 证书出台背景&#xff1a;为进一步贯彻落实中共中央印发《关于深…

VMware中CentOS 7解决网络问题

问题描述 在 VMware 中使用 CentOS 7 中使用 ping www.baidu.com 测试网络是否能正常连接。 出现了未知的名称和服务的问题&#xff1a; 解决方案一 在服务中检查 VMware NAT Service 是否开启 解决方案二 在控制面板中的网络适配器里检查 解决方案三 检查VMware中的网络适…

DAY10_SpringBoot—SpringMVC重定向和转发RestFul风格JSON格式SSM框架整合Ajax-JQuery

目录 1 SpringMVC1.1 重定向和转发1.1.1 转发1.1.2 重定向1.1.3 转发练习1.1.4 重定向练习1.1.5 重定向/转发特点1.1.6 重定向/转发意义 1.2 RestFul风格1.2.1 RestFul入门案例1.2.2 简化业务调用 1.3 JSON1.3.1 JSON介绍1.3.2 JSON格式1.3.2.1 Object格式1.3.2.2 Array格式1.3…

Python第十二章(函数2)

一。变量作用域&#xff1a; 1.局部变量&#xff1a;定义于函数内部&#xff0c;生效在函数&#xff0c;外部不生效 作用&#xff1a;临时保存数据&#xff0c;当函数调用完毕后&#xff0c;则摧毁局部变量 2.全局变量&#xff1a;定义于函数体外面&#xff0c;在函数体外面…

实现元素进入界面的平滑效果

先看效果&#xff1a; 实现思路&#xff1a;获取页面中需要加载动画的节点&#xff0c;用元素的animate()方法创建一个动画对象&#xff0c;并传入两个关键帧&#xff0c;接着使用IntersectionObserverAPI创建观察对象&#xff0c;用于观察元素进入页面。当元素进入界面时&…

sqli.labs靶场(第18~22关)

18、第十八关 经过测试发现User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0加引号报错 这里我们闭合一下试试 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0,127.0.0.1,adm…

漏洞原理linux操作系统的SqlMap工具的使用

漏洞原理linux操作系统的SqlMap工具的使用 Linux操作系统基础操作链接: 1024一篇通俗易懂的liunx命令操作总结(第十课)-CSDN博客 kali的IP地址:192.168.56.1 实操 # kali中使用sqlmap http://192.168.56.1/ sqlmap -u http://192.168.56.1/news/show.php?id46 sqlmap -u …

线程锁多线程的复习

线程 实现方式3种乐观锁&悲观锁线程池线程池总结 进程:是正在运行的程序 线程:是进程中的单个顺序控制流,是一条执行路径 实现方式3种 1.Thread //步骤一:定义一个继承Thread的类 //步骤二:再定义的类中重写run()方法 //步骤三:创建定义类对象 //步骤四:启动线程 class M…

轮廓测长|轮廓仪高精度测量粗糙度

现代工业制造领域中&#xff0c;为什么测量粗糙度至关重要&#xff1f;在现代工业制造领域中&#xff0c;测量粗糙度是一项非常重要的工作。因为粗糙度能够影响到工件的功能性能和外观质量。当我们制造机器零件或工具时&#xff0c;需要确保表面的光洁度能够满足设计要求。过高…