对于Cypress系列感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍5-自定义Cypress,并为您提供关于Cypress系列-使用npm命令搭建cypress环境、Cypress系列(0)-
对于Cypress系列感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍5- 自定义 Cypress,并为您提供关于Cypress系列-使用npm命令搭建cypress环境、Cypress系列(0)- 如何学习 Cypress、Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言、Cypress系列(13)- 详细介绍 Cypress Test Runner的有用信息。
本文目录一览:- Cypress系列(5)- 自定义 Cypress(compressor自定义)
- Cypress系列-使用npm命令搭建cypress环境
- Cypress系列(0)- 如何学习 Cypress
- Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言
- Cypress系列(13)- 详细介绍 Cypress Test Runner
Cypress系列(5)- 自定义 Cypress(compressor自定义)
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- Cypress 不仅支持用户自定义文件结构,还支持用户自定义 Cypress 的各项配置
- Cypress 可以通过 cypress.json 文件来实现各项配置的自定义【文件默认是空的】
- 这里只介绍常用到的配置项,更多配置项请看:https://docs.cypress.io/zh-cn/guides/references/configuration.html#Cypress-config
全局配置项
超时 Timeouts相关
- 超时是必须要了解的核心概念
- 几乎所有命令都可能以某种方式超时
- 所有断言,无论它们是默认断言还是自己添加的断言都具有相同的超时时间
文件夹 / 文件相关
相对于默认文件结构来说,Cypress 支持用户自定义的文件结构
可视视图
Cypress 在 Test runner 中运行时,会显示一个可视视图
Cypress.config()
除了直接在 cypress.json 文件里更改配置项之外,Cypress 还允许我们通过 Cypress.config() 去获取或覆盖某些配置项,语法如下:
// 获取所有config信息 Cypress.config() 获取指定配置项的信息 Cypress.config(name) 更改指定配置项的默认值 Cypress.config(name,value) 使用对象字面量(object literal)设置多个配置项 Cypress.config(object)
小栗子
每次测试运行前都打印所有的配置信息,将下列代码添加到 cypress/support/index.js 中
beforeEach(function () { cy.log(`当前环境变量为${JSON.stringify(Cypress.env())}`) cy.log(`当前配置项信息为${JSON.stringify(Cypress.config())}`) })
运行任意测试文件,则可以看到执行 visit() 命令前打印了两次log日志
在测试文件的栗子
在 Integration 文件夹下创建 testConfig.js 文件
<reference types="cypress" /R> describe('测试配置项', () { it('测试取值和设置值',1)"> () { 获取 pageLoadTimeout默认值 cy.log(`pageLoadTimeout默认值是:${Cypress.config('pageLoadTimeout')}`) 设置 pageLoadTimeout 值 Cypress.config("pageLoadTimeout",100000) 再次获取 pageLoadTimeout 的值 cy.log(`pageLoadTimeout默认值是:${Cypress.config('pageLoadTimeout')}`) }) })
运行 testConfig.js 文件,结果如下图
Cypress系列-使用npm命令搭建cypress环境
很简单,IT行业的技术在不断的更新进步,作为IT行业从业者,等你有了几年工作经验之后,你的知识面不能还跟刚毕业的小白一样,啥都不知道。你可以不去深究它的细节,但是针对一些行业内新兴起的框架和工具等,你要知道是个什么东西,大概能解决什么样的问题。这也是我写文章然后建群跟同行一起交流的目的,希望能在群里面了解到大家都在学些什么,工作中会遇到什么样的问题,多多积累自己的经验。(有需要进群一起交流的,可以加我xiaobotester备注进群)
Cypress作为新兴起的一个自动化测试框架,目前我对它也不是很了解,这里就不去复制别人的介绍,只知道它的功能很强大,先来尝试着了解一下工具是怎么用的。感兴趣的可以自己看官方文档(全英文)介绍:https://www.cypress.io/
Cypress环境搭建
适用系统:
macOS 10.9 and above (64-bit only)
Linux Ubuntu 12.04 and above, Fedora 21 and Debian 8 (64-bit only)
Windows 7 and above
先安装nodejs,然后使用npm命令进行安装。nodejs环境参考之前的文章进行操作:Node.js环境搭建以及常见npm用法
创建一个项目的文件夹,我这里创建的目录是:D:\MyScripts\Cypress-demo。然后进入到文件夹里面后,打开cmd窗口,执行以下命令:
cd /d D:\MyScripts\Cypress-demo
npm init (这条命令执行时,中间敲几次回车即可执行完)
npm install cypress --save-dev
或者安装cnpm后,用cnpm install命令进行安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
安装完之后,执行命令打开cypress:
方式1:
cd /d D:\MyScripts\Cypress-demo
"./node_modules/.bin/cypress" open (不加双引号会执行报错)
方式2:执行下面的命令:
cd /d D:\MyScripts\Cypress-demo (进入目录再执行命令,让生成的cypress文件夹存放在该目录)
npx cypress open
注意事项:
1、启动cypress时,会在当前执行命令的路径下生成cypress文件夹
2、不要进入到node_modules/.bin目录下去执行启动命令,否则会报下面的错误:因为.bin目录下已经有一个cypress命令,无法在这个目录下再生成cypress文件夹了。
正常启动后的页面如下:
能够正常打开以上页面的话,就表示cypress环境安装成功了。
如何验证cypress是否真的已经安装成功?
创建一个项目成功启动后,在项目根目录下用命令启动cypress时,会在根目录生成一个cypress的文件夹,里面有一些写好的现成的测试case:
想要运行哪个case,直接在弹出的cypress窗口中点击对应的case就可以运行,运行用例效果如下:
Cypress官方文档:https://docs.cypress.io/guides/overview/why-cypress
欢迎关注公众号喔。
往期推荐
本文分享自微信公众号 - 小博测试成长之路(libotest)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
Cypress系列(0)- 如何学习 Cypress
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- Cypress 未来很有可能会火的一塌糊涂,那么我们又应该如何进行学习呢?
- 目前国内 Cypress 可以学习的资源并不多,你百度只搜 Cypress 还可能出现硬件的东西哈哈哈
- 虽然目前官网提供了中文版的官方文档,但感觉翻译的还是一般般
隆重推荐
- 目前国内可以说是第一本关于 Cypress 的书,博主整个系列的文章都是基于这本书的,阅读->敲代码->写博客->巩固知识
- 它就是蔡超老师写的《Cypress 从入门到精通》,博主认为这本书可以很好的帮助你入门 Cypress,并且能帮助你学习进阶的内容
- 所以也帮蔡老师打打广告,希望更多的童鞋跟我们一起学习 Cypress啦!
- 下面附上了当当旗舰店的二维码啦!现在超便宜的。。我买的时候还要50呢。。
买不了吃亏买不了上当啦啦啦~快来跟我一起学习吧!!
Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- 断言是测试用例的必要组成部分
- 没有断言,咱们就不知道测试用例的有效性,到底通过没通过
- Cypress 的断言基于 Chai 断言库,并且增加了对 Sinon-Chai、Chai-jQuery 断言库的支持,其中就包括 BDD 和 TDD 格式的断言
BDD 格式的断言
- expect
- should
TDD 格式的断言
assert
常见的断言方式
以下列出了常见的元素断言
长度(Length)
// 重试,直至找到3个匹配的<li.selected> cy.get('li.selected').should('have.length',3)
重点: hava.length
类(Class)
重试,直至这个input不再有disabled的class
cy.get('form').find('input').should('not.hava.class','disabled')
重点: not.hava.class
值(Value)
重试,直至这个textarea的值为 poloyy
cy.get('textarea').should('have.value','poloyy')
重点: have.value
文本内容(Text Content)
重试,直至这个span不再包含'click me'
cy.get('a').parent('span.help').should('not.contain','click me')
重点: not.contain
针对元素是否可见(Visibility)
重试,直至button可见
cy.get('button').should('be.visible')
重点: be.visible
针对元素是否存在(Existence)
重试,直至 id=loading 元素不再存在
cy.get('#loading').should('not.exist')
重点: not.exist
针对元素状态(State)
重试,直至radio状态是checked
cy.get(':radio').should('be.checked')
重点: be.checked
针对 CSS
重试,直至complete这个类有匹配的css为止
cy.get('.completed').should('have.css','text-decoration','line-through')
重点: hava.css
针对回调函数(callback)
如果内建的断言没有满足你的需求,可以自己写断言函数,然后作为一个回调以参数的形式传给 .should()
假设源HTML如下
<div class="main-abc123 heading-xyz987">Introduction</div>
自己写的断言函数
Cypress系列(13)- 详细介绍 Cypress Test Runner
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
前言
- Test Runner 也叫运行器,Cypress 因为它的存在,才在众多自动化测试框架中脱颖而出
- Cypress 使测试在一个独特的交互式运行器中运行测试,不仅可以在执行命令时查看测试结果,同时还允许查看被测应用程序
Test Runner 的简介
- Test Runner 是一个库或者工具,它用来挑选一个包含单元测试或者一系列其他设置的测试集合【打包测试用例集】
- 然后执行这个测试集合,并将测试结果写入控制台或日志文件【运行测试用例集】
- Test Runner 使创建和执行测试套件更加方便和灵活
- 不同的语言,会有不同的 Test Runner
Cypress Test Runner
Cypress 自带的交互式测试运行器功能强大,允许你在测试运行期间就查看测试命令的执行结果,并同时监控在命令执行时,被测程序所处的状态
Cypress Test Runner 的组成
讲解的顺序就是按上面图片1-6哦
测试状态目录(Test Status Menu)
展示测试用例成功的数目
展示测试用例失败的数目
展示测试用例待定的数目
最后展示整个测试文件的运行总时间
右侧还可以手动再次运行一次当前测试文件的所有测试用例哦
命令日志(Command Log)
命令
这里要说下命令的意思,其实就是调用的方法,只不过官方会将它说成命令;一个命令等于调用了一个方法
作用
- 命令日志用于记录每个被执行的命令
- 点击命令,可以在 Console 中查看命令应用于哪个元素,以及执行的详细信息;同时应用程序预览(App Preview)会显示当前命令执行时被测应用程序的状态
URL 预览(URL Preview)
展示测试命令执行时,被测应用程序所处的 URL,它能够使你更方便地查看测试路由
应用程序预览(App Preview)
展示测试运行时,被测应用程序的实时状态(样式,动画之类的)
视窗大小(ViewPoint Sizing)
- 可以通过设置视窗大小来测试页面响应式布局
- 可以在 cypress.json 文件中通过设置 viewportWidth 和 viewportHeight 两个配置项来控制视窗大小
Cypress 元素定位辅助器(Selector Playground)
可以帮助我们识别元素唯一的定位标识
今天关于Cypress系列和5- 自定义 Cypress的讲解已经结束,谢谢您的阅读,如果想了解更多关于Cypress系列-使用npm命令搭建cypress环境、Cypress系列(0)- 如何学习 Cypress、Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言、Cypress系列(13)- 详细介绍 Cypress Test Runner的相关知识,请在本站搜索。
本文标签: