You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jasmine+Protractor框架下如何让Allure单步骤失败后继续执行测试用例

解决方案

实现逻辑

  • 捕获步骤执行过程中的所有异常,避免异常向上抛至Jasmine执行器导致测试中断
  • 对接Allure原生步骤状态设置接口,将传入的status参数绑定到对应步骤,支持passed/failed/broken/skipped四种Allure标准状态
  • 优化异步截图操作的等待逻辑,避免截图、日志上报丢失

修改后的工具函数

function addStep(name, status, stepLogic = () => {}) {
    try {
        // 执行传入的步骤业务逻辑
        stepLogic();
        
        allure.createStep(name, () => {
            // 修复原代码字符串模板不生效的问题,替换为反引号
            testutils.logger().debug(`${name}`);
            return browser.takeScreenshot().then((png) => {
                allure.createAttachment(name, () =>
                    Buffer.from(png, 'base64'), 'image/png')();
            });
        })();
        
        // 手动设置步骤状态
        allure.getCurrentTest().stepStatus(status);
    } catch (error) {
        // 步骤执行异常时自动标记为失败,记录异常信息
        allure.createStep(name, () => {
            testutils.logger().error(`${name} 执行失败: ${error.message}`);
            return browser.takeScreenshot().then((png) => {
                allure.createAttachment(`${name}_失败截图`, () =>
                    Buffer.from(png, 'base64'), 'image/png')();
                allure.createAttachment(`${name}_错误堆栈`, () =>
                    Buffer.from(error.stack, 'utf-8'), 'text/plain')();
            });
        })();
        allure.getCurrentTest().stepStatus('failed');
        // 不抛出异常,确保后续步骤继续执行
    }
}

Jasmine兼容配置

需要在protractor.conf.js中添加如下配置,禁用Jasmine默认的单断言失败中断逻辑:

exports.config = {
    // 原有其他配置保持不变
    jasmineNodeOpts: {
        stopOnSpecFailure: false,
        stopSpecOnExpectationFailure: false
    }
}

调用示例

  • 正常执行成功的步骤:addStep("打开测试页面", "passed", () => { browser.get("/test") })
  • 标记失败但不中断后续步骤:addStep("提交表单", "failed", () => { element(by.css("button.submit")).click() })
  • 用例执行完成后可统一统计失败步骤数量,手动设置整体用例状态:allure.getCurrentTest().status(failStepCount > 0 ? "failed" : "passed")

内容的提问来源于stack exchange,提问作者Naveenchandar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:45:03