Karate 在功能空手道Soap API的背景中声明全局变量
我正在使用空手道来提供SOAP API服务。如何声明全局变量??正如您可以在下面的功能文件中看到的那样?打印响应后,我有变量名Karate 在功能空手道Soap API的背景中声明全局变量,karate,Karate,我正在使用空手道来提供SOAP API服务。如何声明全局变量??正如您可以在下面的功能文件中看到的那样?打印响应后,我有变量名def ourSession=/Envelope/Body/LoginReturn我正在下一个场景中使用此变量(ourSession),但它失败了?但这不是全球性的。 那么如何将“ourSession”声明为全局变量??所以我可以用在其他场景中? 我们将非常感谢您的帮助。请看一下我下面的功能文件 Feature: SOAP calls to the follow
def ourSession=/Envelope/Body/LoginReturn
我正在下一个场景中使用此变量(ourSession
),但它失败了?但这不是全球性的。
那么如何将“ourSession”声明为全局变量??所以我可以用在其他场景中?
我们将非常感谢您的帮助。请看一下我下面的功能文件
Feature:
SOAP calls to the following service:
Background:
* url baseUrl
* def configSS = Java.type('practice.utilities.Shellscripts')
##################################### LOG IN #########################################################
@DataAcquisition
Scenario: login
Given request
"""
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsh="http://www.informatica.com/wsh">
<soapenv:Header/>
<soapenv:Body>
<wsh:Login>
<RepositoryDomainName>Domain_Aqr_Dev_Powercenter</RepositoryDomainName>
<RepositoryName>Powercenter_Repository_Service</RepositoryName>
<UserName>#(AM_USERNAME)</UserName>
<Password>#(AM_PASSWORD)</Password>
<UserNameSpace/>
</wsh:Login>
</soapenv:Body>
</soapenv:Envelope>
"""
When soap action '/login'
Then assert responseStatus == 200
And print 'response: ', response
* def ourSession = /Envelope/Body/LoginReturn
* print ourSession
#
功能:
对以下服务的SOAP调用:
背景:
*基于url的url
*def configSS=Java.type('practice.utilities.Shellscripts')
#####################################登录#########################################################
@数据采集
场景:登录
提出请求
"""
域\u Aqr\u开发\u Powercenter
Powercenter\u存储库\u服务
#(AM_用户名)
#(AM_密码)
"""
当soap操作“/login”时
然后断言responseStatus==200
并打印“response:”,response
*def ourSession=/Envelope/Body/LoginReturn
*打印我们的会话
不要为后续呼叫创建新方案。一个场景可以有多个请求。不要为后续调用创建新场景。一个场景可以有多个请求
我在下一个场景中使用这个变量(ourSession)
你不能。堆栈溢出中有很多答案可以解决这个问题,请找到并阅读
请阅读以下文件:
引述:
如果您希望后台的变量被一个场景修改,以便以后的场景可以看到更新的值,那么您不应该这样认为,您应该将“流”合并到一个场景中
空手道中有很多“重复使用”的方法,例如。所以你应该能够想出如何做你想做的事
现在,如果您确实想要一个“全局”变量,请使用最有可能的变量:
我在下一个场景中使用这个变量(ourSession)
你不能。堆栈溢出中有很多答案可以解决这个问题,请找到并阅读
请阅读以下文件:
引述:
如果您希望后台的变量被一个场景修改,以便以后的场景可以看到更新的值,那么您不应该这样认为,您应该将“流”合并到一个场景中
空手道中有很多“重复使用”的方法,例如。所以你应该能够想出如何做你想做的事
现在,如果您真的想要一个“全局”变量,请使用最有可能的变量:谢谢您的回复,但我的业务要求是将它们拆分为具有不同标签的不同场景。不过,如果我使用一个标记在一个场景下运行所有场景,效果会很好谢谢您的回复,但我的业务需求是将它们拆分为具有不同标记的不同场景。但是,如果我在一个场景下使用一个tagi运行所有脚本,它会工作得很好。我厌倦了使用callonce,但给了我一个错误,可能是我的语法错误。根据我的功能文件,你能告诉我正确的语法吗。我将不胜感激。比如我如何使用callonce使用(我们的会话)使用“callonce”,如果我错了,请纠正我,我只能使用一次,或者我可以在多个场景中使用???@AzazAhmad抱歉-请遵循以下流程:我厌倦了使用callonce,但给了我一个错误,可能是我的语法错误。根据我的功能文件,你能告诉我正确的语法吗。我将不胜感激。如我如何使用callonce使用(我们的会话)使用“callonce”,请纠正我的错误,我只能使用一次,或者我可以在多个场景中使用???@AzazAhmad抱歉-请遵循以下流程: