如何在小黄瓜步骤中发送有效负载和 header 参数

how to send payload and header parameters in a gherkin step

黄瓜新手。 我想使用 Cucumber jvm 测试 rest api。

假设,我有以下场景

scenario: 
 * POST at "http://localhost:8080/x" with payload: 
   """
     <user>
      <name>abc</name>
     </user>
   """
   with header:
   |param1|value|
   |param2|value|

但它不起作用。

如果我将步骤分成 2 个,一个提供有效载荷,另一个提供 header, 我必须保持第一步(因为它会丢失 header)并在第二步执行实际的 post 操作。

我有哪些选择? 谢谢

有一个 feature request for supporting both tables and docstrings,但由于在所有 cucumber 实现中支持它的工作量很大,而不仅仅是用于 jvm 的实现,它已关闭。

因此解决方法是将其分成多个步骤,收集所有数据,并在最后发送:

Scenario: Create a user
Given the following payload:
"""
<user><name>abc</name></user>
"""
And the following headers:
| param | value |
When the request is sent as "POST" to "http://example.com/users"
Then the user is created

我认为这也有助于场景的可读性,有效载荷和 headers 都是可选的,这可能对其他(更简单的)请求有用。