我如何导出为全局变量

时间:2017-11-06 14:50:36

标签: cucumber bdd cucumber-jvm cucumberjs karate

我有空手道功能文件

Scenario: Feature

Given url 'https://testlocal/v1/test/authorize'
And request 'type=code&uri=http://www.testlocal/app'
And header Accept = 'application/x-www-form-urlencoded'
And header Content-Type = 'application/x-www-form-urlencoded'
When method POST
Then status 302
* def code = responseHeaders['Location'][0].substring(59,95)
* print code

当我运行上面的功能文件时,我可以看到单独打印的代码,但是我想在相同的功能文件中使用该代码

Scenario: Login

Given url 'https://testlocal/v1/test/authorize/login'
And request 'username=test1@gmail.com&password=123!&requestId=**"I am not sure how to call the above code here"**
And header Accept = 'application/x-www-form-urlencoded'
And header Content-Type = 'application/x-www-form-urlencoded'
When method POST
Then status 302

由于

1 个答案:

答案 0 :(得分:2)

听起来你只需要一个Background:部分,请将此作为重复使用的一个很好的例子:headers.feature

如果您确实需要在多个要素文件中重复使用,请参阅有关如何re-use feature files via the call keyword的文档。

我想建议改进您的测试,您可以使用form field语法执行以下操作,而不是手动形成请求:

编辑:完整的解决方案

Background:
Given url 'https://testlocal/v1/test/authorize'
And form field type = 'code'
And form field uri = 'http://www.testlocal/app'
When method post
Then status 302
And def code = responseHeaders['Location'][0].substring(59,95)

Scenario: login
Given path 'login'
And form field username = 'test1@gmail.com'
And form field password = '123!'
And form field requestId = code
When method post
Then status 302