如何在Cypress中使用钩子和标签(附代码)

167 阅读2分钟

各位读者大家好,今天我们将学习Hooks和Tags的意义,以及如何在Cypress中使用它们。

什么是Cypress?

Cypress工具是一个用于网络自动化的JavaScript测试自动化解决方案

它使团队能够创建网络测试自动化脚本。该解决方案旨在促进前端开发人员和测试自动化工程师用网络语言即JavaScript编写网络测试,以实现网络测试自动化。

什么是钩子?

Cypress还提供钩子(从Mocha借来的)。这些有助于设置你想在一组测试或每个测试前运行的条件

它们也有助于在一组测试或每个测试后清理条件。

一些常见的钩子如下 -

  • before- 它被执行,一旦在一个描述的块内的任何测试的先前执行被进行。
  • after - 它被执行,一旦在一个描述块内的所有测试的后执行被执行。
  • beforeEach- 在执行一个描述块中的单个块之前执行。
  • afterEach- 它是在执行个体后执行的,它在一个描述的块内阻塞。

示例代码

在上面的示例代码片段中

最后执行的步骤是AFTER ALL。它们都只运行一次。

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

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

这两个代码块都是按照它们被执行的顺序执行的:

           /* Command for Auto Suggestions in Cypress */              
             
 
 /// <reference types="Cypress" />


describe('Hooks Demonstration', 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("AfterEach hook")

    })
    
    it('First Test', function() {
    
        cy.log("First Test")
    })
    
    it('Second Test', function() {
      
        cy.log("Second Test")
    })
 })

OUTPUT

要在Cypress中显示输出 打开终端,键入以下命令

npx cypress open

然后选择目标文件

然后输出将显示如下:----。

什么是标签?

Cypress有2个标签**.only.skip。**

.only标签 用于执行它所标记的块。

.skip 标签用于排除它被标记的区块。

示例代码

    /* Command for Auto Suggestions in Cypress */ 
             
         /// <reference types="Cypress" />


describe('Tags Demonstration', 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")
   
})

/* Block without .only tag  */   
  
it('Third Test', function() {

      cy.log("Third Test")

   })

})

在上面的示例代码中,.only标签执行它所标记的块,而忽略没有.only标签的块。

输出

示例代码

在上面的示例代码中显示,带有.skip标签的块(Third Test)被跳过执行:

describe('Skip tag', function()
{
/* It Block without skip Tag  */ 

   it('First Test', function() {

      cy.log("First Test")
   
})

/* It Block without skip Tag  */
 
it('Second Test', function() {
      
    cy.log("Second Test")
   
})

/*it block with  .skip Tag */
   
   it.skip('Third Test', function() {

      cy.log("Third Test")
   })

})

输出结果