Cypress自动化测试开发指南!

news2024/11/17 3:49:52

 

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
  • 1

安装后使用

1、直接启动

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

./node_modules/.bin/cypress open
  • 1

或者

$(npm bin)/cypress open
  • 1

或者

npx cypress open
  • 1

或者

Or by using yarn
  • 1

打开后显示cucumber插件安装

npm安装

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

配置:

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
  • 1

注意:

下载后使用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的简洁语法和强大功能,使得编写自动化测试变得非常容易和高效。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

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

相关文章

未来的技术发展趋势

文章目录 前言一、人工智能技术势必聚焦安全能力二、单云环境逐渐让位于多云环境三、后量子密码或将在美大范围普及总结前言 2023 年,与网络空间安全息息相关的人工智能等技术发展迅猛,新的信息安全时代已然拉开大幕。在目睹了 ChatGPT、“星链”和量子通信等技术展现出的巨…

血细胞检测数据集 | 用于血细胞计数+检测的小规模数据集_已经整理成VOC格式_总共410张图

项目应用场景 面向血细胞检测计数数据集,已经整理成 VOC 格式,可以直接用于目标检测算法的训练,如 YOLO 等目标检测算法的训练。血细胞检测数据集图片质量好,可直接训练出一个血细胞检测模型,或者作为血细胞检测数据集…

头盔检测 | 基于Caffe-SSD目标检测算法实现的建筑工地头盔检测

项目应用场景 面向建筑工地头盔检测场景,使用深度学习 Caffe SSD 目标检测算法,基于 C 实现。 项目效果 项目细节 > 具体参见项目 README.md (1) 安装 Caffe SSD(2) 执行训练 sh examples/Hardhat/SSD300/train_SSD300.sh (3) 部署算法 项目获取 h…

Mysql索引总结(1)

文章目录 InnoDB索引与MyISAM索引实现的区别是什么?一个表中如果没有创建索引,那么还会创建B树吗?B树索引实现原理(数据结构) InnoDB索引与MyISAM索引实现的区别是什么? MyISAM的索引方式都是非聚簇的&…

前端学习之DOM编程案例:全选反选案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>全选反选</title> </head> <body><input type"checkbox" id"all">全选<ul><li><…

考研||考公||就业||其他?-------愿不再犹豫

大三下了&#xff0c;现在已经开学一个多月了&#xff0c;在上个学期的时候陆陆续续吧周围有的行动早的人已经开始准备考研了&#xff0c;当然这只是下小部分人吧&#xff0c;也有一部分人是寒假可能就开始了&#xff0c;更多的则是开学的时候&#xff0c;我的直观感受是图书馆…

【C++】哈希思想的应用(位图、布隆过滤器)及海量数据处理方法

文章目录 前言位图什么是位图简单实现一个自己的位图位图的应用场景 布隆过滤器位图的缺陷及布隆过滤器的提出布隆过滤器的概念简单实现一个自己的布隆过滤器布隆过滤器的优缺点布隆过滤器的应用场景 海量数据处理 前言 哈希思想的在实际中的应用除了哈希表这个数据结构之外还…

【简单讲解下如何Java中文乱码浅析及解决方案】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

“三步走”带你拿下C++类与对象(上)

本篇主要介绍了类的引入及其定义、类的访问限定符及封装、类的作用域和实例化、类的对象大小计算等内容。初心是为了让读者能够理解并熟悉类与对象的相关内容。 一、类的引入 类&#xff0c;就是类型。它是c中的一个概念&#xff0c;是把c中的结构体进行了升级同时有兼容c中结…

基于springboot的社区医疗服务系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Web题记

反序列化补充知识&#xff1a; private变量会被序列化为&#xff1a;\x00类名\x00变量名 protected变量会被序列化为: \x00\*\x00变量名 public变量会被序列化为&#xff1a;变量名web254 这个逻辑不难&#xff0c;自己刚看的时候还奇怪是不是自己哪里想错了&#xff0c;因为…

【STM32】ST-LINK 下载时遇到的问题

如果出现“ST-Link USB communication error”ST-Link USB通信错误&#xff0c;则需要启动STM32 ST-LINK Utility&#xff0c;点击【ST-LINK】->【Firmaware】更新固件&#xff0c;然后打开Kei&#xff0c;点击魔术棒->->Debug->Settings&#xff0c;开到出现类似“…

正确使用@Autowired

目录 一、前言二、跟着官方文档&#xff0c;学习正确使用Autowired0、实验环境1、通过构造方法进行注入1.1 问题1&#xff1a;那万一没有这个CustomerPreferenceDao对象&#xff0c;会报错吗&#xff1f; 2、通过setter方法注入3、通过方法注入&#xff08;这个方法可以是任意名…

蓝桥杯每日一题:斐波那契(矩阵乘法)

在斐波那契数列中&#xff0c;Fib00,Fib11,FibnFibn−1Fibn−2(n>1) 给定整数 n&#xff0c;求 Fibnmod10000。 输入格式 输入包含不超过 100100 组测试用例。 每个测试用例占一行&#xff0c;包含一个整数 当输入用例 n−1时&#xff0c;表示输入终止&#xff0c;且该…

实现Hello Qt 程序

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、使用 "按钮" 实现 1、纯代码方式实现 2、可视化操作实现 &#xff08;1&#xff09…

【Easy云盘 | 第三篇】登录注册模块上篇(获取验证码、发送邮箱验证码、登录、注册、重置密码)基于AOP实现参数校验

文章目录 4.2登录注册模块设计4.2.1获取验证码&#xff08;1&#xff09;思路&#xff08;2&#xff09;接口&#xff08;3&#xff09;controller层&#xff08;4&#xff09;CreateImageCodeUtils工具类&#xff08;5&#xff09;测试结果 4.2.2发送邮箱验证码&#xff08;1&…

C++初阶---vector(STL)

1、vector的介绍和使用 1.1、vector的介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是…

Pagerank学习笔记

前言 通过b站视频学习以及网上资料整理后进行学习笔记的撰写&#xff0c;只包含pr的一些简单原理及其应用。不包括pr的自定义实现。 一、pagerank简介 背景简介 PageRank算法 由Google创始人Larry Page 在斯坦福读大学时提出&#xff0c;又称PR,佩奇排名。主要针对网页进行…

Docker容器(五)Docker Compose

一、概述 1.1介绍 Docker Compose是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。Compose 是 Docker 公司推出的一个工具软件&#xff0c;可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml&#xff0c;…

bootstrap+thymeleaf 页面多选回显时莫名其妙多了

bootstrapthymeleaf 页面多选回显时莫名其妙多了 问题现象问题分析问题处理总结 问题现象 今天遇到的问题的描述正如标题中的一样&#xff0c;就是后台管理系统在配置完内容后点击保存&#xff0c;回显时发现页面竟然莫名其妙多了一些数据。项目整体后台管理系统采用的是boots…