Cypress - Hooks

Cypress Hooks 用于在每个测试之前/之后执行某些操作。一些常见的钩子如下 −

  • before − 一旦 describe 块内的任何测试的先前执行完成,它就会执行。

  • after − 一旦 describe 块内的所有测试的后续执行完成,它就会执行。

  • beforeEach − 它在单个测试执行之前执行,它会在 describe 块内阻塞。

  • afterEach −它在单个执行后执行,它在 describe 块内阻塞。

实现

下面解释了 Cypress Hooks 命令的实现 −

describe('Tutorialspoint', function() {
    before(function() {
        // 在 it 块中的所有测试之前执行一次
        cy.log("Before hook")
    })
    after(function() {
        // 在 it 块中的所有测试之后执行一次
        cy.log("After hook")
    })
    beforeEach(function() {
        // 在 it 块中的每个测试之前执行
        cy.log("BeforeEach hook")
    })
    afterEach(function() {
        // 在 it 块中的每个测试之后执行
        cy.log("AfterEac hook")
    })
    it('First Test', function() {
    	cy.log("First Test")
    })
    it('第二次测试', function() {
    	cy.log("第二次测试")
    })
})

执行结果

输出结果如下 −

Cypress Hooks

输出日志显示第一个执行的步骤是 BEFORE ALL。

最后执行的步骤是 AFTER ALL。两者都只运行了一次。

在 BEFORE EACH 下执行的步骤运行了两次(在每个 TEST BODY 之前)。

此外,在 AFTER EACH 下执行的步骤运行了两次(在每个 TEST BODY 之后)。

两个 it 块都按其实现的顺序执行。

TAG

除了钩子,Cypress 还有标签 - .only 和 .skip。

虽然 .only 标签用于执行它所标记的 it 块,但 .skip 标签用于排除它所标记的 it 块。

使用 .only 实现

Cypress 中 .only 标签的实现如下 −

describe('Tutorialspoint', function()
   //它被标签 .only 阻止
   it.only('First Test', function() {
      cy.log("First Test")
   })
   //它被标签 .only 阻止
   It.only('Second Test', function() {
      cy.log("Second Test")
   })
   it('Third Test', function() {
      cy.log("Third Test")
   })
})

执行结果

输出结果如下 −

Cypress Has Tags

输出日志显示只有带有 .only 标签的 it 块(第一和第二个测试)被执行。

使用 .skip 实现

Cypress 中 .skip 标签的实现如下 −

describe('Tutorialspoint', function()
   it('First Test', function() {
      cy.log("First Test")
   })
   it('Second Test', function() {
      cy.log("Second Test")
   })
//它被标签 .skip 阻止
   it.skip('Third Test', function() {
      cy.log("Third Test")
   })
})

执行结果

输出结果如下 −

Cypress Skip Tags

输出日志显示带有 .skip 标签的 it 块(第三个测试)在执行中被跳过。