Karate 在功能空手道Soap API的背景中声明全局变量

Karate 在功能空手道Soap API的背景中声明全局变量,karate,Karate,我正在使用空手道来提供SOAP API服务。如何声明全局变量??正如您可以在下面的功能文件中看到的那样?打印响应后,我有变量名def ourSession=/Envelope/Body/LoginReturn我正在下一个场景中使用此变量(ourSession),但它失败了?但这不是全球性的。 那么如何将“ourSession”声明为全局变量??所以我可以用在其他场景中? 我们将非常感谢您的帮助。请看一下我下面的功能文件 Feature: SOAP calls to the follow

我正在使用空手道来提供SOAP API服务。如何声明全局变量??正如您可以在下面的功能文件中看到的那样?打印响应后,我有变量名
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抱歉-请遵循以下流程: