【问题标题】:How to handle parameters in the URL using PATH in Karate DSL framework?如何在空手道 DSL 框架中使用 PATH 处理 URL 中的参数?
【发布时间】:2021-04-16 03:52:25
【问题描述】:

我已阅读以下文档:https://github.com/intuit/karate#path

我还在这些论坛上阅读了许多相关主题的答案,最值得注意的是:How to dynamically create URL having path in between URL using Karate framework

但是,我仍然无法理解这个概念。也许我比一个典型的新手更像一个新手。我的问题是这样的:

The complete api: /sample/api/v1/sampleweb/{sampleweb}/webversion/{version}

    Feature:
    
        Background:
            * def baseUrl = '/sample/api/v1/'
    
        @postRandomData
        Scenario: POST API for creating data
            Given url host
            And path baseUrl

到底如何将 Url 的其余部分添加到“baseUrl”(基本上是上面列出的完整路径)?我应该将“sampleweb/{sampleweb}/webversion/{version}”放入变量中,然后只执行“baseUrl + variable”吗?

请指教。

【问题讨论】:

    标签: automated-tests cucumber karate


    【解决方案1】:

    @hungryhippos 我要做的就是使用这样的灵活性:

    var endpoint =  '/sampleweb/{sampleweb}/webversion/{version}'
    .replace('{sampleweb}', param1)
    .replace({version}', param2)
    

    【讨论】:

    • 非常有趣的解决方案。谢谢分享。
    【解决方案2】:

    只需使用字符串连接。就像普通的 JavaScript 一样。在这里尝试找出“硬编码”字符串和变量之间的区别。

    * def want = 'something'
    * url baseUrl + '/anything'
    * path 'you', want
    

    【讨论】:

    • 如果我理解正确,我可能会这样做:And path baseurl + '/sampleweb/{sampleweb}/webversion/{version}'
    • @hungryhippos 不,你不能
    • 我想我会这样做:And path baseurl, 'sampleweb', sampleweb, 'webversion', version 并从 baseUrl 变量中删除“/”,这样就没有多余的正斜杠了。
    • 这是一个 API 调用,我的请求可能用词不当。它不是传统的 URL(以 http 开头)。但是,是的,我会按照你的建议尝试组合。非常感谢您的帮助!
    • @hungryhippos 我为获得这种灵活性所做的就是使用类似的东西: var endpoint = '/sampleweb/{sampleweb}/webversion/{version}'.replace('{sampleweb}' , param1).replace({version}', param2)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多