Godog生成Cucumber报告时Scenario Outline步骤行值异常咨询
Scenario Outline生成Cucumber报告时步骤line属性异常问题
问题详情
- 目前
cucumber/godog/fmt_cucumber.go中的代码仅针对Scenario Outline场景,覆盖了Cucumber报告中步骤的line属性值(普通Scenario场景的报告显示正常) - 这导致步骤的
line属性指向Examples部分的行号,而非feature文件中步骤定义的实际位置 - 依赖
line属性对步骤进行排序的外部工具,会出现步骤顺序混乱的问题 - 其他官方支持的Cucumber实现(Java、JS、Python等)均能正确生成Scenario Outline的报告,
line属性会对应步骤在文件中的实际位置
相关代码片段
func (f *Cuke) buildCukeStep(pickle *messages.Pickle, stepResult models.PickleStepResult) (cukeStep cukeStep) { ... line := step.Location.Line if len(pickle.AstNodeIds) == 2 { _, row := feature.FindExample(pickle.AstNodeIds[1]) line = row.Location.Line } ... cukeStep.Line = int(line) ... }
解决方案建议
直接移除针对Scenario Outline的line属性覆盖逻辑,保留步骤本身的原始行号即可,修改后的代码如下:
func (f *Cuke) buildCukeStep(pickle *messages.Pickle, stepResult models.PickleStepResult) (cukeStep cukeStep) { ... line := step.Location.Line // 移除覆盖line属性的逻辑,保留步骤原始行号 // if len(pickle.AstNodeIds) == 2 { // _, row := feature.FindExample(pickle.AstNodeIds[1]) // line = row.Location.Line // } ... cukeStep.Line = int(line) ... }
如果需要保留Examples行号的相关信息,可以考虑将其存储到自定义字段中,而非覆盖原始的步骤行号,这样既不影响外部工具的排序逻辑,又能保留示例数据的位置信息。
内容的提问来源于stack exchange,提问作者Katya
相关产品推荐
相关产品推荐

