cypress测试脚本_Cypress 自动化测试学习使用

安装

mkdir cypress-start

npm install

# 进入创建的项目目录

cd /your/project/path

cd cypress-start

npm install cypress --save-dev

yarn add

cd /your/project/path

cd cypress-start

yarn add cypress --dev

打开运行cpress

./node_modules/.bin/cypress open

或者使用npm bin

$(npm bin)/cypress open

或者使用npx

npx cypress open

或者使用yarn

yarn run cypress open

开始使用

创建一个sample_spec.js文件.

查看 Cypress 更新我们的spec文件列表.

登录 Cypress 交互模式.

在 cypress/integration 目录下创建一个新的文件

touch {your_project}/cypress/integration/sample_spec.js

一旦我们创建了这个文件,Cypress测试引擎会立马在Integration Tests列表中显示出来。Cypress会监视你的spec文件,有任何的修改和更新都会立马显示出来。

即使我们还没有写任何的测试也没有关系。点击sample_spec.js,我们会看到Cypress会自动打开浏览器并运行测试脚本。不过此时会看到

No tests found in your file:/usr/local/proj/cypress-start/cypress/integration/sample\_spec.js的提示。

编写一个简单的测试

编写第一个通过的测试.

编写第一个失败的测试.

关注 Cypress 实时加载.

在sample_spec.js文件中书写如下代码:

describe('My First Test', function() {

it('Does not do much!', function() {

expect(true).to.equal(true)

})

})

当你保存文件之后会发现,浏览器自动重新加载了。立马就会呈现出测试的结果。

尽管我们没有做一些实际的事情,但是这个测试是通过的。

接下来让我们来编写第一个失败的测试。

describe('My First Test', function() {

it('Does not do much!', function() {

expect(true).to.equal(false)

})

})

同样的,一旦我们保存文件,浏览器立马就会刷新并呈现出一个成功和一个失败的测试结果。

从代码语法中我们能看出来

describe和it来自Mocha

expect来自Chai

这是Cypress所依赖库的一部分。

写一个实际的测试用例

通常测试都分三个阶段:

设置应用的状态.

做一些动作.

断言当前应用的状态.

通俗来说就是我们设置应用的一个初识状态,然后我们做一些操作来改变这个状态值,然后再来判断结果是不是跟我们预期的一样。

接下来我们根据以下几个步骤,通过Cypress来逐步实现:

访问一个网页。

查找网页上的一个元素。

对这个元素进行操作。

断言页面的内容。

第 1 步: 访问一个网页

cy.visit() 的使用很简单,我们以访问百度首页为例:

describe('My First Test', function() {

it('Visits the baidu', function() {

//   cy.visit('https://example.cypress.io')

cy.visit('http://www.baidu.com')

})

})

保存文件之后打开Cypress Test Runner就会发现,浏览器里会自动打开百度首页。需要值得注意的是我们的测试,最好是对我们可控的网站进行测试。

第 2 步: 查询页面元素

使用contains来查找包含参数内容的元素:

describe('My First Test', function() {

it('Visits the baidu', function() {

cy.visit('http://www.baidu.com');

cy.contains('百度一下');

})

})

我们会发现测试通过了。如果我们把cy.contains('百度一下')修改为cy.contains('百度一下XXX')保存文件,就会发现等待一段时间之后提示测试失败。

第 3 步: 点击一个元素

我们在第二步已经获取到了一个元素,只需要在该元素上进行点击操作即可:

describe('My First Test', function() {

it('Visits the baidu', function() {

cy.visit('http://www.baidu.com');

cy.contains('百度一下').click();

})

})

由于百度首页的百度一下按钮在输入框没有输入任何值得时候点击,页面只是会重新加载一下,没有其他的改变,所以不太好进行断言。所以我们希望在输入框中输入一些内容,然后再点击按钮,最后再进行断言。

第 4 步: 进行断言

由于百度首页的百度一下按钮在输入框没有输入任何值得时候点击,页面只是会重新加载一下,没有其他的改变,所以不太好进行断言。所以我们希望在输入框中输入一些内容,然后再点击按钮,最后再进行断言。

describe('My First Test', function() {

it('Visits the baidu', function() {

cy.visit('http://www.baidu.com');

cy.get('#kw').should(($kw) => {

$kw.val('cypress')

});

cy.contains('百度一下').click();

cy.url().should('include', '/s?');

})

})

另外可以对输入框单独的进行断言。通过调用type方法来对获取到的输入框进行值的填充。

describe('My First Test', function() {

it('Visits the baidu', function() {

cy.visit('http://www.baidu.com');

cy.get('#kw')

.type('cypress')

.should('have.value', 'cypress');

})

})

以上就是一个简单的测试用例。

个人认为Cypress比较好的地方在于可调试性非常之好。Time travel、Snapshots、Page events、Console output这些都能够在Cypress 打开的浏览器左侧看到。以上只是一些简单的使用。需要进行深入了解的话查阅官方文档

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理

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

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

相关文章

hadoop综述_Hadoop书籍赠品–综述

hadoop综述各位极客, Packt Publishing关于Apache Hadoop 的书籍赠品已经结束。 您可以在这里找到比赛的原始帖子。 获奖者 将会获得这本书奖的6位幸运获奖者是(姓名出现在他们的电子邮件中): Hadoop真实世界解决方案食谱 塞…

便捷式计算机无线功能按钮,TP-Link TL-MR13U便携式无线路由器Client模式设置

本文介绍了TP-Link TL-MR13U便携式无线路由器,在“客户端模式(Client)”下的设置方法。TL-MR13U工作在“客户端模式(Client)”时,主要作用是用来接收无线WiFi信号,把无线WiFi信号转换为有线网络,实现让台式电脑上网。TP-Link TL-M…

Java命令行界面(第6部分):JOpt简单

JOpt Simple的主页将这个基于Java的库称为“用于解析命令行选项的Java库,例如您可能传递给调用javac的Java库,”该Java库试图“使用POSIX getopt()的命令行选项语法)和GNU getopt_long() 。” 这…

矩阵相乘的strassen算法_矩阵乘法的Strassen算法+动态规划算法(矩阵链相乘和硬币问题)...

矩阵乘法的Strassen这个算法就是在矩阵乘法中采用分治法,能够有效的提高算法的效率。先来看看咱们在高等代数中学的普通矩阵的乘法两个矩阵相乘上边这种普通求解方法的复杂度为: O(n3)也称之为暴力求解或者朴素求解这是暴力求解的代码,三重循环&#xff…

计算机c盘哪些东西可以清理,细说电脑c盘哪些文件可以删除

有些网友反映,自己看C盘里的文件太多了,电脑又太卡,情急之下就把里面的东西删掉了,现在系统都不能用了。为了避免大家再入这个坑,我给大家讲一下哪些是C盘里的无用文件,并且删除后不会影响系统使用C盘是指电…

springboot 注解动态赋值_SpringBoot 使用 @Value 注解读取配置文件给静态变量赋值

1、application.properties 配置文件CxU免费资源网mail.usernamexue163.commail.passwordxuemail.hostsmtp.163.commail.smtp.authtrue2、给普通变量赋值,直接在变量上添加 Value 注解CxU免费资源网import org.springframework.beans.factory.annotation.Value;publ…

软件测试度量计算方法有哪些,软件测试度量(三)

进度差异趋势6.4.3 范围变化(SC)这个指标指出如何固定测试范围。下面总范围 以前的范围 新范围,如果范围扩大的话总范围 以前的范围 - 新范围,如果范围缩小的话一个发布版本范围变化趋势7、结论度量是评估的重要组成部分以及任何业务改进的基础。是应…

ceph与hdfs的比较_分布式存储中HDFS与Ceph两者的区别是什么,各有什么优势?

过去两年,我的主要工作都在Hadoop这个技术栈中,而最近有幸接触到了Ceph。我觉得这是一件很幸运的事,让我有机会体验另一种大型分布式存储解决方案,可以对比出HDFS与Ceph这两种几乎完全不同的存储系统分别有哪些优缺点、适合哪些场…

使用带有OAuth的Spring Security保护资源

1.简介 在本教程中,我们将研究如何使用Spring Security和OAuth来基于路径模式( / api / ** )保护服务器上的管理资源。 我们配置的另一个路径模式( / oauth / token )将帮助已配置的授权服务器生成访问令牌。 请注意&a…

2080ti服务器支持什么系统,2080ti深度学习性能

AI开发平台ModelArtsModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周…

pythonset是什么类型的游戏_Python集合(set)类型的操作

原文详见:http://blog.csdn.net/business122/article/details/7541486python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等…

服务器选购seo优化规则,网站seo优化注意事项1—域名和服务器选择

原标题:网站seo优化注意事项1—域名和服务器选择一个网站的域名和服务器是很重要的,这关乎网站的优化前提,作为一个seo优化人员必须要对自己网站的域名和服务器有所了解。网站seo优化注意事项1:域名的关联性域名怎么选择呢&#x…

as cast float server sql_Sql Server中Float格式转换字符串varchar方法(转)

SELECT CONVERT(varchar(100), CAST(testFloat AS decimal(38,2)))SELECT STR(testFloat, 38, 2)从Excel中导入到sql2000,有一列“联系方式”变成了float类型,我想转换成nvarchar类型,用下面的语句select convert(nvarchar(30),convert(int,联…

openjpa_OpenJPA:内存泄漏案例研究

openjpa本文将提供完整的根本原因分析详细信息以及解决影响Oracle Weblogic Server 10.0生产环境的Java堆内存泄漏(Apache OpenJPA泄漏)的方法。 这篇文章还将演示在管理javax.persistence.EntityManagerFactory生命周期时遵循Java Persistence API最佳实…

美国凯斯西储大学计算机硕士专业怎么样,在凯斯西储大学读硕士大约需要多少花费?...

凯斯西储大学是美国著名大学之一,始建于1826年,坐落于俄亥俄州的克里夫兰,是一所以独立研究闻名的世界顶级私立大学,美国一级国家级大学。美国作为当今世界留学费用最高的国家之一,费用问题是所有赴美留学的学生都非常…

ffmpeg 缩放算法_图像尺寸调整算法介绍并手动实现近邻算法

课程更新完毕,后面会根据同学的意见维护此课程课程讲师:【夏曹俊】课程基于opencv**版3.2讲解,全部使用**的c接口,旧的接口会逐步被opencv抛弃,所以我们学习还是尽量学习新的接口,QT使用**的5.8版本&#x…

win7如何修改dns服务器地址,Win7系统DNS怎么设置?Win7系统DNS设置方法

Win7系统DNS怎么设置?众所周知,DNS地址是一个域名服务器地址,它可以把用户的网站地址解析成IP地址。如果这个服务器出现问题,可能就上不了网了。我们在使用Win7系统的时候,就是因为域名解析服务器不能将要访问的域名解析为正确的…

gradle web_简单的Gradle Web应用程序

gradle webGradle通过“ war”和“ jetty”插件轻松支持Java Web应用程序。 本教程将向您展示如何快速创建一个简单的Java Servlet Web应用程序。 我们的基本项目结构将是: basic-websrcmainjavacomcodetutrHelloWorldServlet.javawebappWEB-INFweb.xml首先&#x…

密钥文件登录服务器,密钥文件登录云服务器

密钥文件登录云服务器 内容精选换一换远程桌面协议(Remote Desktop Protocol,RDP),是微软提供的多通道的远程登录协议。本节为您介绍如何使用RDP文件远程登录Windows弹性云服务器。从管理控制台下载的RDP文件对应唯一的云服务器,当前RDP文件命…

centos格式化优盘命令_u盘格式化工具fat32u盘安装centos6.5

3、声卡驱动不完全匹配,重装下声卡驱动(这种情况很少)朋友电脑开不了机,找我帮他看看,雨林木风win10家庭版,他电脑系统是有做过备份的现在做64位系统引起的■灵活设置背景2、电脑主板电池怎么换新的主板电池不贵的,才不…