Karate框架afterScenario无法获取Scenario定义变量的问题求助
解决Karate afterScenario获取场景变量id的问题
问题分析
你当前的写法里,afterScenario的函数参数id无法自动获取场景内定义的变量,因为Karate不会把场景变量作为回调函数的参数传入,所以导致id始终为null。
正确实现方式
修改configure afterScenario的代码,通过karate.get('id')从当前场景的上下文里获取定义的id变量:
* configure afterScenario = """ function() { var id = karate.get('id'); if (id) { var rowDeleted = db.deleteByMid(id); karate.log(id + ' id deleted after scenario: ' + karate.scenario.name); } else { karate.log('No id found for scenario: ' + karate.scenario.name); } } """
关键说明
- Karate的每个Scenario运行时会维护自己的上下文,场景内通过
def定义的变量都存在这个上下文中 afterScenario回调函数可以通过karate.get(variableName)的方式,直接读取当前场景上下文里的变量- 增加
if (id)的判断是为了兼容某些未定义id的场景,避免出现空指针错误
你的Feature文件写法不需要修改,每个Scenario里定义的id会被正确读取:
Feature Scenario: * def id = '1234' Scenario: * def id = '4566'
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

