Cypress 简明教程

Cypress - Hooks

Cypress Hooks 用于在每次测试之前/之后执行某些操作。一些常见的 hooks 如下:

  1. before - 一旦 describe 块内任何测试的先前执行操作执行完毕,就会执行它。

  2. after - 一旦 describe 块内的所有测试的后执行操作执行完毕,就会执行它。

  3. beforeEach - 在执行单个块之前执行它,它阻止 describe 块。

  4. afterEach - 执行单个块后执行它,它阻止 describe 块。

Implementation

下面对 Cypress Hooks 命令的实现进行了说明:

describe('Tutorialspoint', function() {
   before(function() {
      // executes once prior all tests in it block
      cy.log("Before hook")
   })
   after(function() {
      // executes once post all tests in it block
      cy.log("After hook")
   })
   beforeEach(function() {
      // executes prior each test within it block
      cy.log("BeforeEach hook")
   })
   afterEach(function() {
      // executes post each test within it block
      cy.log("AfterEac hook")
   })
   it('First Test', function() {
      cy.log("First Test")
   })
   it('Second Test', function() {
      cy.log("Second Test")
   })
})

Execution Results

输出如下:

cypress hooks

输出日志显示,首先执行的步骤是 BEFORE ALL。

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

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

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

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

TAG

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

而 .only 标签用于执行它所标记的 it 块,.skip 标签则用于排除它所标记的 it 块。

Implementation with .only

only 标签在 Cypress 中的实现如下 −
describe('Tutorialspoint', function()
   //it block with tag .only
   it.only('First Test', function() {
      cy.log("First Test")
   })
   //it block with tag .only
   It.only('Second Test', function() {
      cy.log("Second Test")
   })
   it('Third Test', function() {
      cy.log("Third Test")
   })
})

Execution Results

输出如下 −

cypress has tags

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

Implementation with .skip

skip 标签在 Cypress 中的实现如下 −
describe('Tutorialspoint', function()
   it('First Test', function() {
      cy.log("First Test")
   })
   it('Second Test', function() {
      cy.log("Second Test")
   })
   //it block with tag .skip
   it.skip('Third Test', function() {
      cy.log("Third Test")
   })
})

Execution Results

输出如下 −

cypress skip tags

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