java – 将REST Assured测试中的请求和响应详细信息添加到Surefi
发布时间:2020-12-15 02:15:14 所属栏目:Java 来源:网络整理
导读:Rest Assured允许编写REST端点的测试.它具有的一个有用功能是 log the request and response in case of a failed test的功能,因此您可以检查发送到REST服务的内容. 请求示例 记录请求和响应的失败测试示例 import io.restassured.RestAssured;import org.ju
Rest Assured允许编写REST端点的测试.它具有的一个有用功能是
log the request and response in case of a failed test的功能,因此您可以检查发送到REST服务的内容.
请求示例 记录请求和响应的失败测试示例 import io.restassured.RestAssured; import org.junit.Before; import org.junit.Test; import static io.restassured.RestAssured.*; import static org.hamcrest.Matchers.*; public class TestRestAssured { @Before public void setUp() { RestAssured.enableLoggingOfRequestAndResponseIfValidationFails(); } @Test public void exampleFailingTest() { String json = "{n" + " "title": "foo",n" + " "body": "bar",n" + " "userId": 1n" + "}"; given() .contentType("application/json; charset=UTF-8") .body(json) .post("http://jsonplaceholder.typicode.com/posts") .then() .body("userId",equalTo(2)); } } 此测试失败,因为返回的userId为1.这是执行测试时在控制台上打印的内容. Request method: POST Request URI: http://jsonplaceholder.typicode.com/posts Proxy: <none> Request params: <none> Query params: <none> Form params: <none> Path params: <none> Multiparts: <none> Headers: Accept=*/* Content-Type=application/json; charset=UTF-8 Cookies: <none> Body: { "title": "foo","body": "bar","userId": 1 } HTTP/1.1 201 Created Server: Cowboy Connection: keep-alive X-Powered-By: Express Vary: Origin,X-HTTP-Method-Override,Accept-Encoding Access-Control-Allow-Credentials: true Cache-Control: no-cache Pragma: no-cache Expires: -1 X-Content-Type-Options: nosniff Content-Type: application/json; charset=utf-8 Content-Length: 65 Etag: W/"41-+JqcAMRWkzuXd+uFDZdzIA" Date: Fri,17 Jun 2016 08:18:59 GMT Via: 1.1 vegur { "title": "foo","userId": 1,"id": 101 } java.lang.AssertionError: 1 expectation failed. JSON path userId doesn't match. Expected: <2> Actual: 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rest of the stacktrace] 问题 这是一个很棒的功能,因为它允许报告更多上下文错误报告.在引擎盖下它使用 Maven Surefire plugin报告两个文件(文本和XML)的错误.但是在这些文件中,它只包含测试方法抛出的异常中的内容.因此报告中的详细信息如下所示: java.lang.AssertionError: 1 expectation failed. JSON path userId doesn't match. Expected: <2> Actual: 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rest of the stacktrace] 哪个好,但可能更好. 这个问题 现在应该很明显了. 如何在Surefire报告中包含REST Assured的请求和响应详细信息? 解决方法
我在这里找到了答案:
Set restAssured to log all requests and responses globally
我首先导入日志过滤器,像这样 import io.restassured.filter.log.*; 然后我将过滤器添加到given()链中,就像这样 RequestSpecification myRequest = RestAssured.given() .filter(new ResponseLoggingFilter()) .filter(new RequestLoggingFilter()); 然后我可以直接在测试输出中看到原始请求和响应. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |