假设您有一个 spec,其中包含几个测试。 在这些测试中,您将打开一个页面并测试一些功能。 每次您想使用 .visit() 命令打开该页面时:

it('test #1', () => {cy.visit('/')// rest of your test})it('test #2', () => {cy.visit('/')// rest of your test})

通过几次测试,事情可能会以某种方式重复。 对于这种情况,您可以改为使用 before() 钩子,它会在所有测试之前打开您的页面:

before(() => {cy.visit('/')})it('test #1', () => {// rest of your test
})it('test #2', () => {// rest of your test
})

请记住,cypress 会在两次测试之间清除浏览器的状态。 所以如果你例如 在测试 1 中登录,您将在测试 2 中注销。

这里需要注意一件事 - 测试 2 可能取决于测试 1 的结果。 如果第一个测试失败,第二个测试可能会在我们的应用程序中的不同位置开始,并为该规范中的所有测试创建多米诺骨牌效应。 以测试不会相互影响的方式隔离您的测试是一种很好的做法。 为此,您可能会发现 beforeEach() 钩子更有用。 这可能需要您以某种方式构建测试,但会帮助您获得整体测试稳定性。

Nested before() and beforeEach() hooks

现在假设您有多个钩子和不同的 describe() 和 it() 块。 这可能是一开始有点混乱的地方,但是当你知道它是如何工作的时候就会变得非常清楚。 考虑以下代码:

before(() => {cy.log('orange')})beforeEach(() => {cy.log('banana')})describe('group #1', () => {before(() => {cy.log('apple')})beforeEach(() => {cy.log('cherry')})it('test #1', () => {// your test})})

运行时执行顺序如下:

比较我们在测试中编写这些的顺序和执行这些测试的顺序。 我喜欢在执行测试或 describe() 块之前将所有钩子视为“压扁”在一起。

Using beforeEach block in support/index.js

有时我喜欢使用这些块来运行我想在所有测试之前运行的“全局”beforeEach() 块。 我在关于处理来自 API 的数据的博客中描述了一个这样的案例。 我为自己创建了一个存储空间,并在每次测试之前将其擦除。 我像这样使用我的 support/index.js 文件:

beforeEach(() => {Cypress.env('boards', []);Cypress.env('lists', []);});

Cypress 的 before 和 beforeEach 钩子函数的使用方式相关推荐

  1. Vue3.x中自定义时钟钩子函数(TypeScript语法)

      钩子函数的运用能使我们的代码更加简洁且易于维护,那么在Vue3.x中钩子函数的编写方式是怎样的呢?   下面,我以一个点击获取当前时间的例子来记录钩子函数的编写过程. 创建hooks目录   一般 ...

  2. vue 函数 路由跳转_vue路由的钩子函数和跳转

    首页可以控制导航跳转,beforeEach,afterEach等,一般用于页面title的修改.一些需要登录才能调整页面的重定向功能. beforeEach主要有3个参数to,from,next. t ...

  3. before vue路由钩子_vue组件级路由钩子函数介绍,及实际应用

    正如其名,vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消. 有多种方式可以在路由导航发生时执行钩子:全局的.单个路由独享的.或者组件级的. 一.全局钩子 你可以使用 rout ...

  4. vue组件级路由钩子函数介绍,及实际应用

    正如其名,vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消. 有多种方式可以在路由导航发生时执行钩子:全局的.单个路由独享的.或者组件级的. 一.全局钩子 你可以使用 rout ...

  5. vue路由的钩子函数有哪些?都做了哪些事情?

    Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数. ...

  6. “约见”面试官系列之常见面试题之第七十六篇之vue-router中的路由钩子函数基本用法 (建议收藏)

    vue-router中的路由钩子函数基本用法 路由钩子函数分为三种类型如下: 第一种:全局钩子函数. router.beforeEach((to, from, next) => { consol ...

  7. vue知识(四)生命周期、钩子函数、路由

    文章目录 一.生命周期 (一)vue生命周期 二.钩子函数 (一)钩子函数 (二)4大阶段8个方法 (1)如何知道vue生命周期到达了什么阶段? (2)钩子函数有哪些 (三)初始化 (1)new Vu ...

  8. vue-router的钩子函数

    vue路由钩子大致可以分为三类: 1.全局钩子 主要包括beforeEach和aftrEach, beforeEach函数有三个参数: to:router即将进入的路由对象 from:当前导航即将离开 ...

  9. vue进入页面执行的钩子函数_vue router的钩子函数总结

    模块一:全局导航钩子函数 1.vue router.beforeEach(全局前置守卫) beforeEach的钩子函数,它是一个全局的before 钩子函数, (before each)意思是在 每 ...

最新文章

  1. 博为峰JavaEE技术文章 —— Hibernate 指南(3)Hbm文件
  2. iOS.访问通讯录.02.写入联系人
  3. Python Tensorflow神经网络实现股票预测
  4. Node.js模块之Buffer
  5. Avalonia跨平台入门第四篇之Popup在uos下问题
  6. 深度揭秘Twitter的新一代流处理引擎Heron
  7. 中国AI公司公开击败谷歌微软,这次是Yi+AI视觉团队
  8. 杭州街头惊现“梦想改造家”,ATM取款区变废为宝
  9. 分式求二阶导数_一道与三角零点距离有关的导数问题
  10. 细述 wxWindows
  11. 微信小程序调查问卷避坑
  12. 微信小程序401unauthorized授权问题解决方法
  13. python 构建和解析邮件
  14. kali linux 账号管理
  15. AndroidStudio利用android-support-multidex解决65536问题64k问题
  16. cocos2dx点击按钮更改按钮图片
  17. 终于等到了!十位Java架构师整理的“阿里P7”养成计划
  18. JavaScript起源及发展
  19. Linux文件系统挂载的概念
  20. servicecomb-pack

热门文章

  1. android获得一个view的高度,Android ViewTreeObserver使用总结及获得View高度的几种方法...
  2. Oracle 查看表空间、数据文件的大小及使用情况
  3. Windows8.1硬盘安装Ubuntu14.04以及卸载Ubuntu14.04参考教程[图]
  4. Windows 10 中 VMware 要求禁用 Device Guard 问题
  5. 修改mysql用户的密码
  6. rhel 4/oracle linux 4/centos linux 4 配置本地yum资源库
  7. Android控件— — —ImageView
  8. mac下搭建lua环境
  9. 地址总线与内存大小的关系(待续…)
  10. 广播网关GPC为MDS多媒体调度再添虎翼