在一个功能中设置空手道中的全局变量以在另一功能中使用

时间:2019-02-07 11:25:53

标签: dsl karate

问题

我有3个不同的功能文件。一种用于EndToEndTest.feature(集成测试),一种用于create-service.feature(基本的api调用),另一种用于create-tariff(需要从create-service.feature响应的api调用) )

EndToEndTest.feature

Feature: End To End Standard

  Background:
  * def result = call read('../get-user-token.feature')
  * def service = call read('create-service.feature')
  * def location = service.responseHeaders['Location'][0]
  * def serviceId = location.substring(location.lastIndexOf('/') + 1)

  # I want serviceId to be set globally so I can access it into the create-tariff.feature

  * def tariff = call read('create-tariff.feature')

create-tariff.feature

Feature: Create Tariff

  Background:
  * def result = call read('../../get-user-token.feature')
  * def service = serviceId

很明显,此处的第二个定义(service = serviceid)将失败,因为它将无法从第一个定义获取serviceId设置

我的问题是,从EndToEndTest.feature传递一个变量(serviceId)分配给create-tariff.feature中的另一个变量(service)的最佳方法是什么

1 个答案:

答案 0 :(得分:2)

让功能相互依赖是一种非常糟糕的做法,我不建议这样做。您甚至不应该让Scenario-依赖其他人。

请阅读:https://github.com/intuit/karate#script-structure

请注意,您拥有hooks-特别是karate.callSingle(),但仅适用于您登录并获得令牌然后需要重新使用的情况。