GVKun编程网logo

Cypress系列(5)- 自定义 Cypress(compressor自定义)

21

对于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系列(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环境

Cypress系列-使用npm命令搭建cypress环境

为什么要开始学习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-demonpm 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


欢迎关注公众号喔。

往期推荐

如何自学软件测试、包装简历实现华丽转行?

Postman教程-接口测试流程&发送第一个请求

Postman教程-Send Requests相关的基本操作

Postman教程-Response相关的基本操作

Postman教程-通过设置代理/拦截器捕获请求信息

Postman教程-变量、集合的基本使用

Postman教程-Pre-request Script和Tests脚本的介绍

Postman教程-Pre-request Script和Tests脚本进阶

Postman教程-如何改变脚本执行顺序

Postman+Newman+Git+Jenkins实现接口自动化测试持续集成




本文分享自微信公众号 - 小博测试成长之路(libotest)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

Cypress系列(0)- 如何学习 Cypress

Cypress系列(0)- 如何学习 Cypress

如果想从头学起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

 

前言

  • Cypress 未来很有可能会火的一塌糊涂,那么我们又应该如何进行学习呢?
  • 目前国内 Cypress 可以学习的资源并不多,你百度只搜 Cypress 还可能出现硬件的东西哈哈哈
  • 虽然目前官网提供了中文版的官方文档,但感觉翻译的还是一般般

 

隆重推荐

  • 目前国内可以说是第一本关于 Cypress 的书,博主整个系列的文章都是基于这本书的,阅读->敲代码->写博客->巩固知识
  • 它就是蔡超老师写的《Cypress 从入门到精通》,博主认为这本书可以很好的帮助你入门 Cypress,并且能帮助你学习进阶的内容
  • 所以也帮蔡老师打打广告,希望更多的童鞋跟我们一起学习 Cypress啦!
  • 下面附上了当当旗舰店的二维码啦!现在超便宜的。。我买的时候还要50呢。。

 

 

买不了吃亏买不了上当啦啦啦~快来跟我一起学习吧!!

Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言

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系列(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的相关知识,请在本站搜索。

本文标签:

上一篇Cypress系列(15)- Cypress 元素定位选择器(元素定位contains)

下一篇Cypress系列(19)- 可操作类型的命令 之 type()(type命令详解)