在单个方案中,请求之间的路径会重置是预期的行为吗?

时间:2019-09-11 15:51:17

标签: karate

我正在尝试创建普通删除测试,并且我们的端点检查Etags。进行此恕我直言的正确方法是:

  1. 获取对象并读取其etag标头
  2. 在后续的DELETE请求中将该标头分配给etag标头

所以我有这样的东西:

Feature: Delete with etag

Background:
    * url config.url
    * path 'path/to/entity/type'

Scenario: Retrieve Login page url     
    Given path entityId
    When method get
    * def etag = responseHeaders['Etag']

    Given path entityId
    And header Etag = etag
    When method delete
    Then status = 204

这似乎应该起作用,但是我看到的是在两个请求之间重置了在后台设置的根路径。这是预期的吗?如果假设是,如果您在一个场景中发出多个请求,则随后的请求可能指向不同的url,这是有道理的,并且有必要重置该路径以避免对辅助主机造成污染(因为路径是仅追加的)

作为后续,根据我的经验,这是一个非常常见的情况。有没有更好的使用模式来处理这种事情?

1 个答案:

答案 0 :(得分:1)

很简单,您只需调整“基本URL”以匹配REST“资源”即可。 url重新设置。 path是。

* url config.url + '/path/to/entity/type'

现在这将按您期望的那样工作:

Given path entityId

如果您仔细观察,Hello World example将显示此模式。