RestAssured接口自动化从入门到框架搭建-3-RestAssured对象详解

前面环境搭建好了,第一个用例也跑成功了,也简单证明了Rest Assured的优点,那就是代码量少,语法简单,就这个特点就能提高写接口测试用例的速度。还是有一点感觉,我们还是不熟悉Rest Assured这个框架,在介绍Rest Assured基本功能之前呢,我这里带大家一起读一读RestAssured.java这个类的代码,这个类告诉了我们很多信息,有必要看一看。

 

1.怎么找到RestAssured.class

我们下在的maven依赖的jar包中有编译之后的代码,这里我们就不用看源码,源码可以去github上找RestAssured项目来看。这里也提供一下源码的链接:https://github.com/rest-assured/rest-assured/blob/master/rest-assured/src/main/java/io/restassured/RestAssured.java

方式1

import static io.restassured.RestAssured.*;

鼠标移动到这一行导入包语句,移动到单词RestAssured,点击进去可以看代码。

方式2

在工程中展开maven依赖中的Rest-Assured.jar包文件,找到RestAssured.class,看代码。

 

2.Rest Assured能做什么(基本功能)

开始阅读RestAssured.class内容,我们直接看51行到342行的注释。

1 Rest Assured是在HTTP Builder(一个软件项目)基础上开发出的一个工具,这个工具能够采用
Java DSL(领域特定语言,例如groovy)进行基于REST风格的服务的测试,使得这种测试变得简单。
2 Rest Assured 支持POST, GET, PUT, DELETE, HEAD, PATCH and OPTIONS这几种类型的请求和响应的验证。没有TRACE类型哈。

下面是一些使用的例子:
1)支持JSON数据解析和验证
2)支持XML数据解析和验证
3)支持cookies添加
4)支持Header字段设置
5)支持Content Type设置
6)正文Body的设置
7)支持Cookies的设置
8)Status状态码相关设置
9)authentication认证设置

上面这些知识,全部是我们前面HTTP协议基础中介绍过的(认证除外),无非就是一句话:在Rest Assured中,可以用代码设置HTTP请求和HTTP响应和Cookies以及头字段。其实这些就是Rest Assured这个框架的基本功能。所以,我在项目中的demo包下的BasicFeatures.java就是用来写这种基本功能的测试用例,这部分不是本篇的重点。

 

3.字段详解

从345到496这些行代码都是成员变量(字段)的定义,我们来整体过一遍。有些字段本篇开始就要记住,有些有一个印象就可以。

3.1 String SSL

这个字段,默认值等于“SSL”,目前只需要知道和加密和证书相关就行,我们暂时没有用到,等用到了再说。

3.2 ResponseParserRegistrar对象

负责向解析器注册表注册其他内容类型。就是下面这些内容类型。

private final Map<String, String> additional = ['application/rss+xml' : 'application/xml', 'atom+xml' : 'application/xml',
            'xop+xml' : 'application/xml', 'xslt+xml' : 'application/xml', 'rdf+xml' : 'application/xml',
            'atomcat+xml' : 'application/xml', 'atomsvc+xml' : 'application/xml', 'auth-policy+xml' : 'application/xml']

3.3 几个final修饰字段

final String DEFAULT_URI = "http://localhost";
final String DEFAULT_BODY_ROOT_PATH = "";
final int DEFAULT_PORT = 8080;
final int UNDEFINED_PORT = -1;
final String DEFAULT_PATH = "";
final AuthenticationScheme DEFAULT_AUTH = new NoAuthScheme();
final boolean DEFAULT_URL_ENCODING_ENABLED = true;
final String DEFAULT_SESSION_ID_VALUE = null;

看一下英文单词就是知道什么用途,大致作用知道就可以。刚开始,我们代码没看得深入,只能这样过一遍。

3.4 String baseURI = DEFAULT_URI

这个baseURI用来把接口完整URL前面主机部分和相同的uri部分抽离出来,这样其他接口完整请求地址就是这个baseURI+测试代码中get("/xxx")。

3.5 int port = UNDEFINED_PORT

程序默认端口是8080,这个我们可以提供使用自己的。

3.6 String basePath

这个好处就是我们可以在测试环境和准生产,生产环境通过改变配置文件中的服务器地址来达到一套代码三套环境可以运行的利器。

3.7 boolean urlEncodingEnabled

默认是true, 就是请求URL会编码,例如name=张三,编码之后,完全看不懂,具体有兴趣可以去HTTP协议中编码表去看看。

3.8 AuthenticationScheme authentication

这是一个关于认证校验的对象,例如token,和OAuth和证书认证,常见就是用户名和密码的登录认证。

3.9 RestAssuredConfig config

定义配置,例如重定向和客户端参数,config().重定向代码

3.10 String rootPath

设置响应中内容的根路径,不然都不好解析响应数据。

3.11 RequestSpecification requestSpecification

这是一个接口,运行你指定一个请求的样子,怎么设计请求都是你的事。

3.12 Parser defaultParser

设置默认的解析器,例如JSON解析,XML解析

3.13 ResponseSpecification responseSpecification

也是一个接口,定义一个你想要的的响应对象

3.14 String sessionId

这个好说,前面HTTP协议基础说过,session是靠id来识别不同session对象和客户端的关系。

3.15 ProxySpecification proxy

这是一个代理对象,代理一般都是 代理Hostname和端口port两个最基本组成。

3.16 List<Filter> filters

一个集合容器放过滤器,过滤器可以帮助我们在实际提交请求之前对请求进行检查和修改。

 

 

4.方法详解

4.1 void filters(List<Filter> filters)

设置过滤器,这样可以作用在每个请求上。

4.2 void objectMapper(ObjectMapper objectMapper)

设置一个对象映射器,用来对象序列化和反序列化

4.3 ResponseSpecification expect()

前面类型告诉我们这是响应 response对象的一个方法,名称是expect(), 也就是期待结果断言之类的,调用格式是 response.expect().xxxx

4.4 RequestSpecification with()

这个是重点,返回类型是一个请求对象,这里定义了with()方法。这个方法会返回 given(), 这个就是我们代码中看到的given()怎么来的,所以你以后在Rest Assured的测试用例代码中看到given() 就要反应过来,这是一个请求对象。请求对象就最大的功能当前就是发送请求。

4.5 List<Argument> withArgs(Object firstArgument, Object... additionalArguments)

一组参数,在对响应内容解析之后多个条件断言会用到,多个条件就是这里的Args

4.6 RequestSpecification given()

重点,given(0就是一个request对象,这个方法里面代码给你解释了,是通过创建createTestSpecification().getRequestSpecification();来得到这个请求对象的。

4.7 RequestSender when()

这个也是重点,虽然我们还没有用过when(), 返回类型是一个请求发送器。

4.8 Response get(String path, Object... pathParams)

重点,前面代码出现过,这里就可以回答前面问题,get请求方法就是对标GET请求类型

4.9 Response post(String path, Object... pathParams)

参考4.8, 这个就是POST类型请求需要调用这个方法。

然后下面好多关于7中HTTP 请求类型的方法定义,这里不一一介绍。

4.10 AuthenticationScheme basic(String userName, String password)

用户名和密码的认证。认证也好好几个方法,针对不同认证类型调用不同方法,这个认证看看后面文章会不会学习到。

 

其他方法就不看了,至少通过本篇大致过了一遍RestAssured.java这个文件内代码,我们能看得懂一下用例的语法和含义。

        @Test
	public void testStatusCode() {
		given().
			get("https://www.baidu.com").
		then().
			statusCode(200);
	}

上面出现大部分方法,我们会一个一个去用具体的接口测试用例去介绍,这本来就是Rest Assured基本功能的一部分,现在我们就是逐步熟悉Rest Assured这个框架,距离搭建我们接口自动化测试框架还有很远的路要走。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值