【问题标题】:Overwrite path already set in Background覆盖已在后台设置的路径
【发布时间】:2018-07-16 13:13:32
【问题描述】:

Background: 中设置path 后,有没有办法覆盖它?

我有很多测试(边界值),基本上只因我测试它们的功能而异。很高兴我可以在Background 中设置path。 但在奇怪的情况下,我需要链接多个调用,因此还需要链接 path 变量。

如果我这样做了

Given path 'Client/GetClient'
...
Given path 'GetServices'
...

在每次 path 调用时,路径都会被正确覆盖,但如果我这样做了

Background:
  * path 'Client/GetClient'
...
Given path 'GetServices'

Givenpath 被附加到已定义的Background 路径,使其变为Client/GetClient/GetServices。 我希望第一次是Client/GetClient,第二次是GetServices

【问题讨论】:

    标签: karate


    【解决方案1】:

    是的,“附加”行为是设计使然,它在 REST-ful URL-s 的典型测试中运行良好!但是你为什么不把后台路径移到你的测试中呢?

    Given path basePath, 'Client', 'GetClient'
    ...
    Given path basePath, 'GetServices'
    

    (编辑删除了错误的信息)。

    另一个建议是不要使用path,只使用网址:

    Given url myUrl + '/basePath/Client/GetClient'
    ...
    Given url myUrl + '/basePath/GetServices'
    

    【讨论】:

    • Given url 已经在 Background 中定义之后,调用 Given url 作为一种重置 path 的机制,我并没有找到太多乐趣。使用Background 背后的原因是为了避免在我将测试复制到其他 REST 函数时可能错过手动路径更新。链接调用时,我将不用。
    • @PebermynteLars 糟糕,url 没有重置,编辑了我的答案。我可以在“覆盖”路径中添加一个新关键字,但这很难设计并且不值得,所以我认为现在最好避免使用Background 作为路径。
    • ...除非您有十几个测试都以相同的方式调用端点,再加上一两个改变路径以测试无效排列的测试。这意味着您最终要声明一个变量,并且必须在这十几个测试中重复Given path,这样其他两个就不会被破坏,这不是很干。
    • @TimKeating 通过不使用 Background 并使用数据驱动的 Scenario 轻松解决:github.com/intuit/karate#data-driven-tests P.S.测试的 DRY 被高估了:P
    • 我通过将需要路径操作的场景分离到一个单独的功能中解决了我的特定问题,但我将不得不重新审视数据驱动的测试,看看这是否适合我。至于另一件事……如果我不关心 DRY 的测试自动化,我就不会将空手道视为 Postman 的潜在替代品!
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2017-05-28
    • 2023-03-04
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多