Karate 1.4.1.RC2:Background定义变量在Examples中报ReferenceError求助
问题解决:Karate 1.4.1.RC2中Scenario Outline无法引用Background变量
问题原因
Karate 1.3+版本调整了测试执行的生命周期逻辑:Scenario Outline的Examples块是在测试解析阶段就被加载处理的,而Background里的变量要等到每个具体Scenario执行前才会定义。1.2.0及以下版本存在兼容逻辑,允许这种跨阶段的变量引用,但新版本严格遵循了Gherkin规范,所以会抛出变量未定义的错误。
解决方案
根据需求,有三种可行的解决方式:
方式1:直接在Examples表格中定义测试数据
如果测试数据简单,直接在Examples里写死参数即可:
Scenario Outline: <name> * def token = call fetch_token Examples: | name | | terr |
方式2:通过外部文件加载Examples数据
把测试数据放到独立的JSON/CSV文件中,比如my-examples.json:
[ {"name": "terr"} ]
然后在feature文件中直接引用这个文件:
Scenario Outline: <name> * def token = call fetch_token Examples: | read('my-examples.json') |
方式3:用循环替代Scenario Outline(适合动态生成的测试数据)
如果必须在Background中处理生成测试数据,改用Scenario结合karate.forEach循环来实现批量测试:
Background: * def my_examples = [{ 'name': 'terr' }] Scenario: 批量执行测试用例 * karate.forEach(my_examples, function(item) { * def token = call fetch_token // 用item.name访问当前测试用例的参数 * print '当前执行用例:', item.name })
内容的提问来源于stack exchange,提问作者Serob
相关产品推荐
相关产品推荐

