我想初始化一些变量以便在数据库中创建一个新项,然后在相同的情况下更改一个变量,但保持其他变量不变并进行更新。例如:
Update path: path/${resourceId}/${orderId}
@DEV @API
Scenario: order not found in container
Given variables
| resourceId | citrus:randomUUID() |
| orderId | citrus:randomString(10,false) |
| errorCode | 404 |
| reasonPhrase | NOT_FOUND |
When <ApiClient> sends message <containerPostRequest>
And <ApiClient> should receive Json message <containerPostResponse>
Given variable orderId is "newString"
And <ApiClient> sends message <addOrderRequest>
Then <ApiClient> should receive Json message <errorResponse>
我试图抛出未找到订单的异常,但是使用此方法从一开始就将orderId设置为newString,以便使用newString创建和定位订单。
这种方法可行吗?
我可以对场景和背景进行硬编码以实现我的目标,但是我尝试使用的上述方法将减少我需要编写的代码量。
答案 0 :(得分:0)
表达式Given variable ... is "..."
覆盖测试用例初始化中的变量。在您的情况下,这不是我们所需要的。您需要使用测试操作来覆盖变量,这是测试执行的一部分。您可以使用以下自定义步骤定义来做到这一点:
Then set variable orderId to "newString"
您需要添加实现此步骤的步骤定义。
public class SetVariableStep {
@CitrusResource
private TestDesigner designer;
@Then("^set variable ([^\\s]+) to \"([^\"]*)\"$")
public void setVariable(String name, String value) {
designer.createVariable(name, value);
}
}
Citrus团队应将此添加到默认步骤定义实现中。