在许多测试用例当中,为了帮助我们创建正确的断言和发送正确的请求,打印出详细的响应和请求数据是非常有用的。为此我们可以使用rest-assured提供的预定义过滤器或者使用其中的一些快捷方法。

一、请求日志

  从1.5版本开始,rest-assured支持请求在发送到服务器之前打印特定请求日志的功能(通过使用RequestLoggingFilter过滤器的方式),这里我们注意到在打印的日志中HTTP Builder 和HTTP Client 会添加额外的头部信息(header)。这个过滤器支持只记录指定请求(RequestSpecification)的指定细节的日志,换句话说,我们可以不关注RequestLoggingFilter过滤器记录的实际发送到服务端的内容,因为在记录完日志之后,过滤器可能会修改请求(request)。如果想要记录实际发送到服务端的内容,可以参考 HTTP Client logging docs 或者使用第三方工具,比如Wireshark。例子如下:

 // 打印指定请求所有的请求细节日志,包括请求参数、请求头部以及请求体(body)等
given().log().all(). ..
//只打印请求参数日志
given().log().params(). ..
//只打印请求体日志
given().log().body(). ..
//只打印请求头部日志
given().log().headers(). ..
//只打印请求cookies
given().log().cookies(). ..
//只打印请求方法
given().log().method(). ..
//只打印请求路径
given().log().path(). ..

二、响应日志

  同样rest-assured也支持响应体日志的打印,比如:我们这里打印除了状态码之外的所有响应体信息,我们可以这样做:

 get("/x").then().log().body() ..

上面的做法无论是否有异常错误发生响应体都会被打印,如果我们只想当异常错误发生时,才打印响应体信息,我们可以这样做:

 get("/x").then().log().ifError(). .. 

同样我们也可以打印出所有的响应体信息,包括状态行(status line)、响应头(header)、cookies:

 get("/x").then().log().all(). .. 

也可以只打印状态行(status line)、响应头(header)、cookies:

 //只打印状态行
get("/x").then().log().statusLine(). ..
//只打印响应头
get("/x").then().log().headers(). ..
//只打印响应cookies
get("/x").then().log().cookies(). ..

我们也可以配置只有当响应状态码等于匹配某个值时,才打印响应信息:

 //只有当响应状态码等于302时,才会打印响应信息
get("/x").then().log().ifStatusCodeIsEqualTo(302). ..
//只有当响应状态码匹配提供的Hamcrest matcher,才会打印响应信息
get("/x").then().log().ifStatusCodeMatches(matcher). ..

三、验证失败日志

  从rest-assured的2.3.1版本开始,rest-assured支持只有当验证失败时才打印请求信息或响应信息的功能。

当验证失败时,打印请求日志,我们可以这样做:

 given().log().ifValidationFails(). ..

当验证失败时,打印响应日志,我们可以这样做:

 get("/x").then().log().ifValidationFails(). ..

我们通过使用 LogConfig 可以做到同时启用当验证失败时打印请求信息和响应信息:

 given().config(RestAssured.config().logConfig(logConfig().enableLoggingOfRequestAndResponseIfValidationFails(HEADERS))). ..

上面的做法只会打印当验证失败时的请求头部信息以及响应头部信息(header)。

这里还有一种针对 同时启用当验证失败时打印请求信息和响应信息 的简单方法:

 RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();

rest-assured的日志使用介绍的更多相关文章

  1. Java常用日志框架介绍

    Java常用日志框架介绍 java日志概述 对于一个应用程序来说日志记录是必不可少的一部分.线上问题追踪,基于日志的业务逻辑统计分析等都离不日志.java领域存在多种日志框架,目前常用的日志框架包括L ...

  2. 【SpringBoot】Logback日志框架介绍和SpringBoot整合实战

    ========================11.Logback日志框架介绍和SpringBoot整合实战 2节课================================ 1.新日志框架L ...

  3. Java常用日志框架介绍(转)

    Java常用日志框架介绍 java日志概述 对于一个应用程序来说日志记录是必不可少的一部分.线上问题追踪,基于日志的业务逻辑统计分析等都离不日志.java领域存在多种日志框架,目前常用的日志框架包括L ...

  4. MySQL二进制日志功能介绍

    二进制日志记录所有更新数据的SQL语句,其中也包含可能更新数据的SQL语句,例如DELETE语句执行过程中无匹配的行.二进制日志中还包含了与执行SQL语句相关的内容,例如SQL语句执行的时间.错误代码 ...

  5. SpringBoot系列之日志框架介绍及其原理简介

    SpringBoot系列之日志框架介绍及其原理简介 1.常用日志框架简介 市面上常用日志框架:JUL.JCL.jboss-logging.logback.log4j.log4j2.slf4j.etc. ...

  6. Log4net 日志使用介绍

    概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...

  7. Linux_日志管理介绍(一)

    一.介绍 1.CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务,但是rsyslogd是和syslogd服务相兼容的 2.除了系统默认的日志之外,采用RPM方式安装的系 ...

  8. .NET日志工具介绍

    最近项目需要一个日志工具来跟踪程序便于调试和测试,为此研究了一下.NET日志工具,本文介绍了一些主流的日志框架并进行了对比.发表出来与大家分享. 综述 所谓日志(这里指程序日志)就是用于记录程序执行过 ...

  9. 11、Logback日志框架介绍和SpringBoot整合实战 2节课

    1.新日志框架LogBack介绍     简介:日志介绍和新日志框架Logback讲解 1.常用处理java的日志组件 slf4j,log4j,logback,common-logging 等     ...

  10. PostgreSQL的日志文件介绍

    PostgreSQL的日志文件 pg_log:数据库活动日志(也就是数据库的操作日志): pg_xlog:事务日志: pg_clog:事务状态日志(pg_clog是pg_xlog的辅助日志). 现在主 ...

随机推荐

  1. 刷题向》关于一道奇怪的贪心(田忌赛马)BZOJ1034(NORMAL-)

    这道题一看就是一道贪心,比较简单,但是越容易的题考试的时候越容易错... 没什么好说的,一遍SORT之后,直接强行田忌赛艇(滑稽脸)就好啦. 注意在对比大小的时候不仅要从前还要从后同时,不过这两个情况 ...

  2. 【NOIP2008】传纸条

    [描述] Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就 ...

  3. bootstrap设计网站中添加代码高亮插件

    这款插件的名字叫做google-code-prettify 使用该插件之前的效果: 使用插件之后的效果: 接下来说步骤: (1)下载两个文件 http://codecloud.sinaapp.com/ ...

  4. orzdba工具安装注意事项

    orzdba是一个监控mysql性能的一个比较好用的perl脚本,是淘宝开源的小工具,下载地址http://code.taobao.org/p/orzdba/src/trunk/ 配置过程中除了参照& ...

  5. 面试题:filter过滤器 listener 监听器 案例有点用

    1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行 ...

  6. 批量添加数据SqlBulkCopy

    using System.Data.SqlClient; class Program { static void Main() { string connectionString = GetConne ...

  7. Web网站的几个QPS

    评价一个网站的"大小",处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的.但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈 ...

  8. Luogu 3242 [HNOI2015]接水果

    BZOJ4009 权限题 真的不想再写一遍了 大佬blog 假设有果实$(x, y)$,询问$(a, b)$,用$st_i$表示$i$的$dfs$序,用$ed_i$表示所有$i$的子树搜完的$dfs$ ...

  9. 如何看待那些不能重现的bug?

    在我们日常测试活动中,经常会发现一些bug,但是这些bug可能就是昙花一现,再也无法(或者很难)重现出来,内心灰常崩溃.那到底有哪些方面可能会导致这类的缺陷发生呢? 我以自己工作中所遇到的给出一些自己 ...

  10. 编写高质量代码改善C#程序的157个建议——建议10: 创建对象时需要考虑是否实现比较器

    建议10: 创建对象时需要考虑是否实现比较器 有对象的地方就会存在比较,在.NET的世界中也一样.举个最简单的例子,在UI中,有一个10个人的Salary列表.根据排序的需要,列表要支持针对基本工资来 ...