karate - 空手道单场景多url访问
问题描述
我想在一个场景中访问多个 url。
当 url 被定义Background
并且另一个 url 被使用时Scenario
,url 被改变。
如果我使用path
,则不会出现这种行为。可以修复url
吗Background
?
Feature: examples
Background:
* url 'https://jsonplaceholder.typicode.com'
Scenario: get all users and then get the first user by id
Given path 'users'
When method get
Then status 200
Given url 'https://api.github.com/search/repositories'
And param q = 'intuit/karate'
When method get
Then status 200
# The expected behavior is accessed to 'https://jsonplaceholder.typicode.com/users'.
# But the accual behavior is accessed to 'https://api.github.com/search/repositories/users'.
Given path 'users'
When method get
Then status 200
解决方案
不,但如果你移动Given url 'https://api.github.com/search/repositories'
到第二个Scenario:
,它会工作得很好。
这是一个刻意的设计。查看hello world 示例。它打了 2 个电话,但url
只提到了一次,因为第二个电话只是一个path
加法。这是典型的 REST 模式。
所以如果你真的需要做一个不同的 API 调用,你必须使用完整的url
:
Background:
* def baseUrl = 'https://jsonplaceholder.typicode.com'
Scenario: get all users and then get the first user by id
Given url baseUrl
And path 'users'
When method get
Then status 200
Given url 'https://api.github.com/search/repositories'
And param q = 'intuit/karate'
When method get
Then status 200
Given url baseUrl
And path 'users'
When method get
Then status 200
推荐阅读
- javascript - 如何在 Ant Design Modal Component Body 旁边启用滚动条?
- gsm - sim7000g硬件uart无法拨打电话
- python - 在 Time sleep 运行的特定时间打印消息
- sql - 比较每个月并为增量添加行
- quarkus - 在 Quarkus 中,我可以合并在许多依赖项中具有相同名称的文件,即类型安全配置文件吗?
- actions-on-google - 测试帐户的帐户关联问题“出了点问题,所以我无法让您登录。但您可以稍后再试”
- c - 不能在 graphics.h 中使用 settextstyle()
- cassandra - 我们可以为多个节点使用相同的 Keystore 在 Cassandra 中实现节点间加密吗?
- mysql - 在 MySQL 中组合两个不同的字符串
- python - 如何在制作模型类的对象获取数据时以更好的方式使用尝试接受?