3.9 jest自定义失败重跑

由于最近做formData格式的请求,需要对一大批文件做接口自动化的测试,当某些文件因为超时、文件本身、程序本身等原因造成自动化脚本中的部分用例失败时,我们就需要把这些文件单独来出来进行甄别及修改,以便再次运行脚本的时候,可以单独运行产生错误的文件,jest本身的bail参数显然不能满足当前需求。

一、封装新建目录及复制文件的方法

const fs = require('fs')
const path = require('path')

function createDir(dirpath, file) {
    let exist = fs.existsSync(dirpath)
    if (exist) {
        copy(dirpath, file)
    } else {
        fs.mkdir(dirpath, function (error) {
            if (error)
                return error
        })
        copy(dirpath, file)
    }
}

function copy(dirpath, file) {
    let fileName = getFileName(file)
    let failedPath = path.join(dirpath, fileName)
    let readSteam = fs.createReadStream(file);
    let writeSteam = fs.createWriteStream(failedPath);
    readSteam.pipe(writeSteam)
}


function getFileName(filepath) {
    let arr = filepath.split("\\");
    return arr[arr.length - 1]
}

module.exports = createDir

二、在断言失败语句前面,调用上述方法

  if (flag === 1 && (end_time - start_time) < wait_time) {
                    wait.wait(wait_time)
                    continue;
                }
                if (flag === 1 && (end_time - start_time) >= wait_time) {
                    copy(defaultSettings.config.failed_path,array[i])
                    assert.fail("Time Out")
                    break;
                }
                if (flag === 2) {
                    copy(defaultSettings.config.failed_path,array[i])
                    assert.fail("Task's state is Error")
                    break
                }
                if (flag === 3) {
                    copy(defaultSettings.config.failed_path,array[i])
                    assert.fail("Task's action is ALLOW")
                    break
                }
                if (flag === 4) {
                    assert.ok("success")
                    break
                }
                else {
                    assert.fail(flag)
                    break;
                }

三、接下来可以新建一个failed.js测试脚本,去读取该目录里的文件,如果存在文件,就执行,没有文件就不执行,jest不像mocha,可以在运行中获取this实例,所以可以只能在测试方法外层加上一个判断来执行,类似如下代码结构

describe('',function (){
    let flag = false//假设读取failed目录为空,则flag为false
    if (flag){
        it('should ', function () {

        });
    }
    else
        it.skip('should ', function () {
           
        });
})

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值