GVKun编程网logo

Cypress系列(8)- Cypress 编写和组织测试用例篇 之 钩子函数Hook(activated钩子函数)

21

对于想了解Cypress系列的读者,本文将是一篇不可错过的文章,我们将详细介绍8-Cypress编写和组织测试用例篇之钩子函数Hook,并且为您提供关于Cypress系列(0)-如何学习Cypress

对于想了解Cypress系列的读者,本文将是一篇不可错过的文章,我们将详细介绍8- Cypress 编写和组织测试用例篇 之 钩子函数Hook,并且为您提供关于Cypress系列(0)- 如何学习 Cypress、Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例、Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例、Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言的有价值信息。

本文目录一览:

Cypress系列(8)- Cypress 编写和组织测试用例篇 之 钩子函数Hook(activated钩子函数)

Cypress系列(8)- Cypress 编写和组织测试用例篇 之 钩子函数Hook(activated钩子函数)

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

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

 

Hook

就是常说的钩子函数,在 pytest 框架里面也有 hook 这个概念;接下来就让我们来看看 Mocha 提供的 Hook 函数叭!

 

Mocha 提供的 Hook 函数

  •  before()
  •  beforeEach()
  •  afterEach()
  •  after()

 

hook 的作用

利用钩子函数可以在所有测试用例执行前做一些预置操作(如:准被测试数据、测试环境)

或者在测试结束后做一些后置操作(如:清理测试数据)

 

hook 具体写法的栗子(比较长,耐心敲,耐心看)

运行结果

知识点

若包含多级测试套件,那么父级套件、祖父级套件声明的 hook 函数会作用于所有子级套件的测试用例,孙子级套件的测试用例...以此类推(如:栗子中的二级套件、孙子级套件)

 

before()

  • 该测试套件下,所有测试用例的统一前置操作
  • 它在一个 describe() 或 context() 内只会执行一次,在所有 it() 之执行
  • 在运行结果可以看到是叫 BEFORE ALL 

 

after()

  • 该测试套件下,所有测试用例的统一后置操作
  • 它在一个  describe()  或 context() 内只会执行一次,在所有 it() 之执行
  • 在运行结果可以看到是叫  AFTER ALL ,而且是在最后一行

 

beforeEach()

  • 该测试套件下,每个测试用例的前置操作
  • 一个  describe()  或 context() 内有多少个测试用例 it() ,就会执行几次 beforeEach() 
  • 在运行结果可以看到是叫 BEFORE EACH 

 

afterEach()

  • 该测试套件下,每个测试用例的后置操作
  • 一个 describe()  或 context() 内有多少个测试用例 it() ,就会执行几次  afterEach()  
  • 在运行结果可以看到是叫 AFTER EACH 

 

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

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

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

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

 

前言

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

 

隆重推荐

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

 

 

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

Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例

Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例

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

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

 

前言

  • 上一节只讲了如何跳过执行 or 只执行某些测试用例集 or 测试用例
  • 在实际项目中,可能存在需要在运行中动态地去决定某个测试是否需要执行

 

如何动跳过执行某些测试用例

测试代码

 

运行以下命令

进入 Cypress 安装目录,cmd敲

yarn cypress:open --env flag=1

打开 Cypress Test Runner 之后运行上面的代码文件

 

测试结果

 

当 flag != 1 时的测试结果

 

知识点

  • 我们可以通过指定环境变量来动态判断是否执行指定的测试用例
  • 设置环境变量有很多种方法,这里用的是命令行方式,格式: --env key=val1,key2=val2 ,若需要指定多个环境变量则需要逗号来隔开,而不是空格
  •  this.skip() ,当测试用例内调用该方法时,方法后面的代码都不会执行,方法前面若是调用 Cypress 的方法则也不会执行(如: cy.visit() 、 cy.log() ),只有非 Cypress 方法才会执行(如: console.log("1234") )

备注:后面再讲环境变量不同的配置方式

Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例

Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例

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

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

 

前言

  • 自动化测试中,数据驱动是很重要的一个点
  • 实际项目中,肯定会出现这种情况:多条测试用例的执行步骤,断言步骤完全一致,只有输入和输出数据不一样
  • 这个时候依靠数据驱动(数据参数化)来解决这个问题可以提升我们的测试效率
  • 在 Cypress,可以通过数据来动态生成测试用例,以达到数据驱动的效果

 

动态生成测试用例的步骤

前提

这边用的还是 Cypress 提供的被测应用哦

# 进入被测应用的目录
cd C:\Users\user\Desktop\py\cypress-example-recipes\examples\logging-in__html-web-forms

# 启动本地服务
npm start

 

启动成功后,cmd窗口将显示服务器的地址和端口

 

创建一个数据文件

在 Cypress安装目录/cypress/integration 文件夹下,创建一个子目录 datas ,在该目录下创建一个 testLogin.data.js 文件,代码如下

export const testLoginUser = [

    {
        summary: "登录成功",username:"jane.lane"
    },{
        summary: "登录失败"文件

在 integration 文件夹下创建一个 testLogin.js 文件,代码如下

 

运行测试文件

进入 Cypress 安装文件夹,cmd执行命令

yarn cypress:open

 

单击 testLogin.js,Cypress 会启动 Test  Runner 运行测试,运行成功后,将看到运行结果页面

测试结果

可以看到第一条用例是测试通过,第二条用例是执行失败了(因为账号密码是错的,失败理所当然)

 

总结

  • 根据测试数据动态生成测试用例,是一种数据驱动的做法
  • 可以提升我们的测试效率,当我们测试数据本身改变时,无须更改测试代码,只要改测试数据文件
 

总结

以上是小编为你收集整理的Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://www.cnblogs.com/poloyy

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系列8- Cypress 编写和组织测试用例篇 之 钩子函数Hook的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Cypress系列(0)- 如何学习 Cypress、Cypress系列(10)- Cypress 编写和组织测试用例篇 之 动态跳过测试用例、Cypress系列(11)- Cypress 编写和组织测试用例篇 之 动态生成测试用例、Cypress系列(12)- Cypress 编写和组织测试用例篇 之 断言的相关知识,请在本站寻找。

本文标签: