CSRF TOKEN和具有JESSION ID的cookie不会传递到空手道中的不同场景

时间:2018-04-16 05:55:22

标签: karate

情景1:

url: path1

Method : POST

Headers     
Accept
Content-Type


Form fields:
Username
Password

url: path2
Method:get

Headers     
Accept
Content-Type

path2的输出为CSRF TOKEN,Cookie为JESSION ID

Scenario2: 要调用方案2中的任何路径,我们需要传递路径2输出CXRF TOKENJSESSIONID

问题:

对于我们的测试用例,我们需要始终传递jsession id(此jession id应仅从path2获取)和csrf令牌从path2传递到所有后续调用。现在没有发生

  

1> Csrf令牌未传递给scenario2

     

2>此处创建的JESSION ID与path2

中的jesession id不同

想知道是否有办法将此csrf令牌和jesession id标头传递给不同的场景吗?

1 个答案:

答案 0 :(得分:0)

首先阅读文档,然后查看以下具体示例:call-updates-config.featurecommon.feature

这就是我要做的事情:

  • 在继续进行之前,先尝试将所有内容都作为SINGLE场景运行。通常你永远不需要手动设置cookie
  • 编写一个可重复使用的功能,可以调用@foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.FirstName) </td> <td> @Html.DisplayFor(modelItem => item.LastName) </td> <td> @Html.DisplayFor(modelItem => item.DateOfBirth) </td> <td> **@Html.DisplayFor(modelItem => item.MembershipTypeId)** </td> <td> <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> | <a asp-action="Details" asp-route-id="@item.Id">Details</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> </td> </tr> path1并将其保留在path2中。
  • common.feature结束时将CSRF令牌和JSESSIONID的值设置为变量
  • 现在您可以编写调用common.feature的第二个功能或方案。再次,请阅读文档,有很多关于如何从另一个特性调用一个特征并传递变量的例子
  • 正如我所说,你通常不需要对cookie做任何事情,但是你应该能够像这样设置cookie(参考common.feature的语法):cookie
  • 同样使用* cookie JSESSIONID = yourVariableName关键字或适用于正确设置CSRF令牌的关键字