我正在试用我的开发组织中使用Cucumber进行功能/集成测试,并且一直在使用Citrus和它为API测试提供的标准胶水。我遇到的障碍是如何动态更改给定场景变量的REST URL。该功能似乎存在于Java DSL中,但未在Cucumber步骤中公开。我可以使用系统属性的占位符配置citrus-http:client,但是当Spring加载应用程序上下文时,这些显然需要解析。我希望能够在我的背景消息定义中做的是:
Given message todoListRequest
And <todoListRequest> header Content-Type is "application/json"
And <todoListRequest> header Accept is "application/json"
And <todoListRequest> uri is "/todo/${item-number}"
然后在场景中:
Scenario: Gets expected item for specified item number
Given variables
| item-number | 3 |
When <todoListClient> sends message <todoListRequest>
Then <todoListClient> should receive message <todoListResponse>
服务主机名和端口仍然可以在应用程序上下文中配置,并且构造的URI附加到该值以创建方法的目标(在这种情况下为GET,虽然我没有指定,也许这是其他的东西,需要添加?)。这看起来合情合理吗?显然,我可以为此编写自己的粘合剂,但我想看看是否有开箱即用的功能,以便在走这条路线之前看起来像一个非常明显的REST场景。我知道Cucumber集成是最近的(从2.6开始?)所以它可能还在成熟。如果这是值得欢迎的话,这是我有兴趣帮助的领域......
由于
答案 0 :(得分:3)
您可以在此处使用Citrus内部邮件标题:
And <todoListRequest> header citrus_http_method is "POST"
And <todoListRequest> header citrus_http_request_uri is "/todo/${item-number}"
Citrus http客户端将读取这些特殊标头,并在发送邮件之前自动删除它们。
编辑:从Citrus 2.7.1开始,有一个默认的REST Cucumber步骤API,可以通过Http提供对发送和接收消息的出色访问。所以你可以写
Given Content-Type: application/json
And Accept: application/json
When send POST /todo/${item-number}
Then receive status 200 OK
在此处详细了解:http://www.citrusframework.org/reference/html/cucumber.html#http-steps
答案 1 :(得分:-2)