其他分享
首页 > 其他分享> > Cypress系列(65)- 测试运行失败自动重试

Cypress系列(65)- 测试运行失败自动重试

作者:互联网

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

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

 

重试的介绍

学习前的三问

  1. 什么是重试测试
  2. 为什么重试很重要
  3. 如何使用重试

 

为什么要重试

 

其他导致不可靠测试的因素

 

重试的优势

 

备注

 

通过插件来完成重试

安装 cypress-plugin-retries

npm install -D cypress-plugin-retries

 

在 cypress/support/index.js 下增加如下代码

require('cypress-plugin-retries’)

 

在 package.json 的 scripts 代码块下增加如下代码

{
   "scripts" : {
        "retryCases":"CYPRESS_RETRIES=2 cypress run"
   }  
}

 

使用

在 Cypress 安装目录下运行下面命令,所有测试用例若失败都会自动重试 2 次

yarn retryCases

 

Cypress 自带的重试功能介绍

前言

 

注意

当再次运行每个测试时,以下 hook 函数也将重新运行

  1. beforeEach
  2. afterEach

但 before 和 after 不会触发

 

重试的工作流程

假设 Cypress 设置了重试两次

注:能够在命令日志中查看尝试的次数,并根据需要扩展每次尝试以进行检查和调试

 

配置重试功能

全局配置

前言

 

cypress.json 分开定义

 

cypress.json 合并定义

这样无论是 cypress run 命令还是 cypress open 命令,重试次数都是 2

 

自定义配置

测试用例级别

context('测试用例级别', function () {
    it('栗子1', {
        // 无论是 runMode 还是 openMode 都重试 2 次
        retries: 2,
        defaultCommandTimeout: 1000
    }, function () {
        cy.get('#id')
    });

    it('栗子2', {
        // 分开指定重试次数
        retries: {
            runMode: 2,
            openMode: 1
        },
        defaultCommandTimeout: 1000
    }, function () {
        cy.get('#id')
    });
})

 

测试结果

栗子1 重试 2 次,栗子2 重试 1次,测试不通过就会打 ×,点击可以查看详细错误信息

(不得不说,这按钮 UI 真好看...)

 

测试用例集级别

context('测试用例集级别', {
        // 此 context 下面的所有测试用例(it)重试次数都是 1
        retries: 1,
        defaultCommandTimeout: 1000
    }, function () {
        it('栗子1', function () {
            cy.get('#id')
        })

        it('栗子2', function () {
            cy.get('#id')
        })
    }
)

 

测试结果

 

重试功能 + .screenshot() 的栗子

测试代码

context('截图的栗子', function () {
    it('栗子', {
        retries: 2,
        defaultCommandTimeout: 1000
    }, function () {
        cy.screenshot('user-login-errors')
        cy.get('#id')
    });
})

 

测试结果

重试是的截图图片名称会包含 attempt

 

标签:function,Cypress,测试运行,重试,测试用例,测试,cypress
来源: https://www.cnblogs.com/poloyy/p/13821860.html