如何在空手道上进行条件变量定义

时间:2019-07-17 08:10:46

标签: karate

我只针对一种环境(阶段)编写了空手道测试。由于测试能够成功捕获错误(感谢空手道和Intuit团队!),因此现在要求在生产环境中运行测试。

我们的测试是基于graphql的,其中大多数请求都是查询的。我想知道是否有可能基于在终端上传递的karate.env来切换变量?

我们的大多数请求如下:

And def variables = {objectID:"1234566", cursor:"1", cursorType:PAGE, size:'10', objectType:USER}
And request { query: '#(query)', variables: '#(variables)' }
When method POST
Then status 200

我曾尝试阅读github页面上的条件逻辑页面,但尚未成功。

到目前为止,我尝试过的是:

* if (karate.env == 'staging') * def variables = {objectID:"1234566", cursor:"1", cursorType:PAGE, size:'10', objectType:USER}

但没有成功。

任何帮助将不胜感激。非常感谢!

2 个答案:

答案 0 :(得分:3)

我们将graphql查询和变量保存在单独的json文件中,但是,我们试图解决同一问题。根据{{​​3}}的想法,尽管在部署之前可能会对其进行清理。

Given def query = read('graphqlQuery.graphql')
    And def prodVariable = read('prod-variables.json')
    And def stageVariable = read('stage-variables.json')
    And def variables = karate.env == 'prod' ? prodV : stageV
    And path 'api/' + 'graphql'
    And request { query: '#(query)', variables: '#(variables)' }
    When method post
    Then status 200

答案 1 :(得分:0)

这应该很容易:

* def variables = karate.env == 'staging' ? { objectID: "1234566", cursor: "1", cursorType: 'PAGE', size: '10', objectType: 'USER' } : { }

这是另一个提示:

* def data = { staging: { foo: 'bar }, production: { foo: 'baz' } }
* def variables = data[karate.env]