博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RestAssured接口自动化从入门到框架搭建-19-解析和认证
阅读量:4302 次
发布时间:2019-05-27

本文共 2586 字,大约阅读时间需要 8 分钟。

这篇来学习下Rest Assured中的解析,在Rest Assured 几种解析有:XML,JSON,HTML.TEXT四种。我们可以从哪儿看到这几种类型呢,在请求头那里,可以看到content-type(例如下图),一般值是text/html这样,说明这个响应内容是html格式。而且前面我们知道,不管响应内容是什么格式,Rest Assured都会自动找到解析器,去进行解析。

 

1.全局指定Parse类型

例如在我们自己项目中,我们返回类型,比如说就只有一种就是JSON类型,那么我们在框架设计中可以指定默认的解析器就是JSON类型。一下是代码,如果知道是哪种类型就选择哪一行代码指定默认解析器。

@Test	public void testDefaultParser() {		RestAssured.defaultParser = Parser.JSON;		RestAssured.defaultParser = Parser.XML;		RestAssured.defaultParser = Parser.HTML;			}

 

2.在局部指定解析器

局部指定就是在某一个接口请求的时候指定。

@Test	public void testDefaultParser2() {		//given().get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/02/").then().using().defaultParser(Parser.JSON);		given().get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/02/").then().using().defaultParser(Parser.XML);	}

 

3.使用自定义的Parser

有时候content-type不光是xml,存在一些自定义的类型。

@Test	public void testCustomerParser1(){		RestAssured.registerParser("application/vnd.uoml+xml", Parser.XML);		RestAssured.unregisterParser("application/vnd.uoml+xml");	}

或者下面这样写

@Test	public void testCustomerParser2() {		given().get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/02/").then().using().parser("application/vnd.uoml+xml", Parser.XML);	}

 

认证和授权

认证(authentication)

主要作用是验证你是谁,不能你告诉服务器你是谁,你就是谁。常用的认证方法有:
1. 登录表单
2. HTTP认证
3. HTTP digest
4. X.509证书
5. 其他自定义认证方法

授权(authorization)

主要作用是决定你是否有全选访问资源。主要实现方法有:

1. URLs访问控制
2. 安全对象和方法
3. 访问控制清单(ACLs)

 

这里我们来看看Rest Ressured中授权的代码在接口中的基本使用。

等待服务器询问秘钥方式

这种基本的认证就是,通过用户名和密码,也就是我们登录验证的场景。在Rest Assured中,这种场景大概是这样的:一开始Rest Assured不会直接把用户名和密码这个秘钥发给服务器。当服务器明确告诉客户端需要登录验证的时候,Rest Assured才发送,是放在请求头中发送,所以这个过程,至少执行了两次请求-响应过程,第一次不带用户名密码这个秘钥发送请求,响应告诉客户端你需要告诉我登录秘钥。第二次客户端发送请求,请求头带上账号信息,第二次服务器返回响应。

@Test	public void testBasicChallengeAuthentication() {		given()			.auth().basic("tom", "123").		when()			.get("https://www.xxx.com").		then()			.statusCode(200);	}

这种方式还可以这样写

@Test	public void testBasicAuthentication() {		RestAssured.authentication = basic("tom", "123");		given()			.get("https://www.xxx.com").		then()			.statusCode(200);	}

 

先发制人方式

上面是等待服务器明确要求认证,Rest Assured才发送账号秘钥。还有方式就是,不等服务器询问,啥也不管,把秘钥发过去再说,类似先发制人的效果。

@Test	public void testBasicPreemptiveAuthentication() {		given()			.auth().preemptive().basic("tom", "123").		when()			.get("https://www.xxx.com").		then()			.statusCode(200);	}

 

Digest盘问方式

Digest认证方式是HTTP协议的一种算法,这种方式也是需要等待服务器盘问之后,才发送秘钥。简单来看一个例子,了解一下。

@Test	public void testDigestAuthentication() {		given()			.auth().digest("tom", "123").		when()			.get("https://www.xxx.com").		then()			.statusCode(200);	}

       前面这十几篇文章介绍了Rest Assured这个接口测试工具的基本功能,主要就是练习使用Rest Assured提供的API,接下来文章,主要介绍如何借助Rest Assured来搭建我们接口自动化测试框架。

转载地址:http://pnows.baihongyu.com/

你可能感兴趣的文章
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>
git 删除远程分支
查看>>
删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法
查看>>
python multiprocessing遇到Can’t pickle instancemethod问题
查看>>
APP真机测试及发布
查看>>
iOS学习之 plist文件的读写
查看>>
通知机制 (Notifications)
查看>>
10 Things You Need To Know About Cocoa Auto Layout
查看>>
C指针声明解读之左右法则
查看>>
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>
ios设备唯一标识获取策略
查看>>
获取推送通知的DeviceToken
查看>>
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>