首页 > 解决方案 > 我可以使用空手道来测试带有多个后续斜杠的 URL 吗?

问题描述

当路径包含多个斜杠时,我正在尝试使用空手道检查我们服务器的行为,所以我有一个类似的测试

  Scenario: Multiple slashes
    * url 'http://localhost'
    Given path '///some//path///'
    When method get
    Then status 404

运行此程序时,空手道输出/日志包含所有斜杠:

12:04:52.307 [pool-1-thread-1]  DEBUG com.intuit.karate - request:
1 > GET http://localhost///some//path///
1 > Host: localhost

但根据服务器日志(本演示仅使用 Apache),实际请求只有单斜杠:

127.0.0.1 - - [23/Aug/2021:12:04:52 +0200] "GET /some/path/ HTTP/1.1" 404 488 "-" "Apache-HttpClient/4.5.13 (Java/11.0.4)"

所以我有几个问题:

  1. 斜线规范化是预期的(和记录的?)行为吗?
  2. 我可以在某个地方关掉它吗?
  3. 如果斜线被折叠,日志不应该包含实际的(规范化的)请求,以便我看到真正发送到服务器的内容吗?

标签: karate

解决方案


你可以看看这个帖子是否回答了你的问题,结合path关键字(滚动到最后):https ://github.com/intuit/karate/issues/1561

如果不是,您可以假设这不受直接支持。就我个人而言,我认为这样的用例不值得用空手道自动化。

解决方法是通过集成任何 Java 库(通过空手道互操作)或使用 cURL(hack)来进行自己的 HTTP 调用:https ://stackoverflow.com/a/64352676/143475

欢迎您为空手道贡献代码。


推荐阅读