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

如何在CodeceptJs+Cucumber的Before钩子中获取场景名称

CodeceptJS在Before钩子中获取Cucumber场景名称的实现方案

问题描述

搭配Cucumber helper使用CodeceptJS时,出于报表配置需求需要在Before区块获取当前Scenario名称,编写如下代码后控制台无相关日志输出,无法拿到目标场景名:

Before(() => {
  console.log(Scenario.name)
});

正确实现方式

Before钩子的回调支持接收运行时注入的上下文参数,当前执行的场景信息会通过参数传入,直接从参数中取值即可。不要直接访问全局的Scenario对象——该对象是步骤定义阶段的构造对象,不是运行时的当前场景实例,无法拿到动态的场景名称。

  • 基础写法(适配大多数稳定版本)
Before((scenario) => {
  // 直接打印当前场景名称
  console.log(scenario.name);
});
  • 新版本兼容写法(适配CodeceptJS 3.x + Cucumber 6+ 版本)
    如果上述写法拿不到值,可以从注入的currentTest属性上取值:
Before(({ currentTest }) => {
  // 不同版本字段名略有差异,做兼容处理即可
  const scenarioName = currentTest.title ?? currentTest.name;
  console.log(scenarioName);
});

排错提示:如果写完还是没有日志输出,先确认你的Before钩子是写在Cucumber的step_definitions目录下的对应文件中,不要写在普通的CodeceptJS helper配置里,否则钩子不会被Cucumber运行时识别触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:57:12