java验证http get的返回值
假设您有这样的测试用例:
@Test
public class MsgFlowIT extends TestNGCitrusTestDesigner {
@Autowired
private HttpClient todoClient;
@CitrusTest(name = "SampleJavaTest.Send")
public void Send() {
http()
.client(todoClient)
.send()
.post("/api/values/Method1")
.contentType("application/xml")
.name("Method1")
.messageType(MessageType.XML)
.payload(<XmlMessage>msg1</XmlMessage>);
http()
.client(todoClient)
.send()
.get("/api/values/Method2")
//.response(HttpStatus.OK)
.contentType("application/xml")
.messageType(MessageType.XML)
.name("Method2")
//.accept("text/html")
.expect(<XmlMessage>msg2</XmlMessage>); // check if the return value of "get" matches the ".expect"
}
是否可以使用http get的返回值并检查它是否匹配 预定义的xml结构或满足xpath表达式? 在我的例子中,我一定要知道http get返回什么,并将其与一些预期的xml进行比较。 我希望有人能帮忙,我已经投入了很多时间:/
# 1 楼答案
Citrus客户端发送GET请求并从服务器获得响应。测试代码示例中完全缺少
receive
部分。在您的示例中,您只发送了两个请求,而没有在测试中收到响应,以进行验证您可以使用预期的报头和有效负载信息验证响应消息。我建议在代码示例中使用以下发送-接收操作:
在同一个客户端端点上,每个
send
后跟一个receive
。还请注意,Http本质上是一个同步协议,因此发送操作会阻止测试,直到收到服务器的响应除了使用预期的头和有效负载验证接收到的响应消息外,还可以为验证目的在接收操作上定义XPath表达式