我只针对一种环境(阶段)编写了空手道测试。由于测试能够成功捕获错误(感谢空手道和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}
但没有成功。
任何帮助将不胜感激。非常感谢!
答案 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]