首页 文章

用变量调用空手道功能

提问于
浏览
1

在空手道中,您可以通过发送json / list和map来调用功能 . 有多种方法我试图发送值并在被调用的功能中使用它,但它会抛出错误

例如:

抛出错误:路径:$,实际:'',预期:'30e093da-c4e3-4ee0-b180-e5d0b4302d9f',原因:不是子字符串

步骤: * call read('Logcheck.feature') {requestId : "#(responseHeaders['request-id'][0])"}

在logCheck功能中,我试图通过使用 #(requestId) 来获取requestId

Logcheck功能步骤

* def resultFromServiceLog = utils.getResultFromLog(baseUrl,'#(requestId)','service')

我尝试了另一种方法,我将其分配给了

* def x = {requestId : responseHeaders['request-id'][0]}
* call ('logcheck.feature;) x

我将发送json的另一种方法

* json req = {requestId : "#(responseHeaders['request-id'][0])"} * call read('logcheck.feature') req

logcheck.feature的步骤
* print req * def resultFromServiceLog = utils.getResultFromLog(baseUrl,'#(requestId)','service')

例如:

抛出错误:com.intuit.karate.exception.KarateException:javascript评估失败:utils.getResultFromLog(baseUrl,'#>(requestId)','service'),null

print req输出是

[print] {“requestId”:“c996f752-c288-40c7-9398-c913254971e6”}

1 回答

  • 0

    您需要清楚使用嵌入式表达式,请再次阅读文档:https://github.com/intuit/karate#rules-for-embedded-expressions

    例如,这是错误的:

    * def resultFromServiceLog = utils.getResultFromLog(baseUrl,'#(requestId)','service')
    

    代替:

    * def resultFromServiceLog = utils.getResultFromLog(baseUrl, requestId, 'service')
    

    这是错的:

    * call ('logcheck.feature') x
    

    你可能意味着:

    * call read('logcheck.feature') x
    

相关问题