一、默认值

  rest-assured发起请求时,默认使用的host为localhost,端口为8080,如果你想使用不同的端口,你可以这样做:

 given().port(80)......

或者是简单点:

 ..when().get("http://myhost.com:80/doSomething");

你也可能改变默认的baseURI、basePath、port和认证scheme:

 //域名或者IP
RestAssured.baseURI = "http://myhost.com";
//端口
RestAssured.port = 80;
//请求基本路径
RestAssured.basePath = "/resource";
//认证
RestAssured.authentication = basic("username", "password");
//根路径
RestAssured.rootPath = "x.y.z";

这就意味着,类似 get("/hello") 这样的一个请求,其实完整的请求为:http://myhost.com:80/resource/hello   ,并且使用基础授权认证"username" and "password"。关于根路径的设置后面再介绍。其他的默认值可以参考下面:

  // 默认过滤器list
RestAssured.filters(..);
//默认的request specification
RestAssured.requestSpecification = ..
// 默认的response specification
RestAssured.responseSpecification = ..
//指定rest-assured对请求参数是否需要进行URL编码
RestAssured.urlEncodingEnabled = ..
//如果没有注册解析器来处理响应体的content-type数据,指定默认值解析器
RestAssured.defaultParser = ..
//为给定的content-type指定一个解析器
RestAssured.registerParser(..)
//注销指定的content-type的解析器
RestAssured.unregisterParser(..)

你也可以重置为标准的baseURL(localhost)、basePath(空)、标准端口port(8080)、标准根路径root path(" "),默认的认证scheme(none)以及URL编码(true),通过下面的方法重置:

 RestAssured.reset();

二、Specification重用

  在不同的测试用例当中,我们可能会有重复的响应断言或者是请求参数,那么我们可以将重复的这一部分提取出来定义一个规范或者模板,这样的话在后续的测试用例当中就都可以使用这个规范模板了,为了达到这个效果,我们可以使用 RequestSpecBuilder 或 ResponseSpecBuilder来实现。

1.ResponseSpecification重用

例如,你想在多个测试用例中,都使用这样的断言:判断响应状态码是否为200,并且Json数组"x.y"的大小是否等于2;  你可以定义一个ResponseSpecBuilder来实现这个功能:

 ResponseSpecBuilder builder = new ResponseSpecBuilder();
builder.expectStatusCode(200);
builder.expectBody("x.y.size()",is(2));
ResponseSpecification responseSpec = builder.build(); //接下来就可以在不同的测试用例中使用responseSpec
when().
get("/something").
then().
spec(responseSpec).
body("x.y.z", equalTo("something"));

在这个例子中,需要重用的两个断言数据被定义在"responseSpec",并且与另外一个body断言合并,组成了这个测试用例中全部的断言,那么这个测试用例需要全部断言都通过用例结果才会通过,一旦其中一个断言失败,则测试用例的测试结果为失败。

2.RequestSpecification重用

  同样,假如你想在多个测试用例中重用请求数据,可以通过下面的代码来实现:

 RequestSpecBuilder builder = new RequestSpecBuilder();
builder.addParam("parameter1", "parameterValue");
builder.addHeader("header1", "headerValue");
RequestSpecification requestSpec = builder.build(); //接下来就可以在多个测试用例中使用requestSpec啦
given().
spec(requestSpec).
param("parameter2", "paramValue").
when().
get("/something").
then().
body("x.y.z", equalTo("something"));

这里的请求数据被合并在"requestSpec"中,所以这个请求包含了两个参数("parameter1"和"parameter2")以及一个头部("header1")。

rest-assured的默认值与Specification重用的更多相关文章

  1. [转]Hibernate设置时间戳的默认值和更新时间的自动更新

    原文地址:http://blog.csdn.net/sushengmiyan/article/details/50360451 Generated and default property value ...

  2. (转载)JAVA中八种基本数据类型的默认值

    原文链接: http://simon-c.iteye.com/blog/1016031 引用 For type byte, the default value is zero, that is, th ...

  3. 一些实用的JQuery代码片段收集(筛选,搜索,样式,清除默认值,多选等)

    //each遍历文本框 清空默认值 $(".maincenterul1").find("input,textarea").each(function () { ...

  4. Hibernate设置时间戳的默认值和更新时间的自动更新

    Generated and default property values 生成的和默认的属性值 The database sometimes generates a property value, ...

  5. python12--字符串的比较 函数的默认值的细节 三元表达式 函数对象 名称空间 作用域 列表与字典的推导式 四则运算 函数的嵌套

     复习   1.字符串的比较; 2.函数的参数; ******实参与形参的分类: 3.函数的嵌套调用:     # 字符串的比较#  -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 ...

  6. mysql字段默认值不生效的问题解决(上)

    在项目中使用mybatis做为持久层框架,mysql数据库.项目上线前,DBA要求我们将每张数据库表中的字段都设置默认值和not null.之前项目中有一些insert语句是将表中所有字段都列出来,然 ...

  7. day_12函数默认值,数据类型的补充,函数对象名称空间与作用域,函数的嵌套定义

    复习, 昨天讲了字符串的比较,按照从左往右比较每一个字符,通过字符对应的ASCII码进行比较 函数的参数,‘ 实参与形参 形参:在函数定义时()中出现的参数 实参,在函数调用时()中出现的参数 实参的 ...

  8. (原创)关于FFmpeg的一些有关的初始化默认值的问题

    最近手头上要做一个媒体格式分析库,能解析文件,流的视频格式,编码格式等一些重要的视频参数能进行尽量多的提取.当我们做媒体相关方面的东西,自然而然就会想到FFmpeg这个强大的开源媒体库,所以我们肯定会 ...

  9. antd做form表单的组件共用,利用mapPropsToFields填写默认值

    做单页应用,不管是用Vue还是React,或者其他,有一个重要的原则,就是:组件重用. 既然组件可以重用,那么当添加一个信息,和修改该信息的布局必然是一致的,这时候,最好的方法自然是利用同一个组件,在 ...

随机推荐

  1. 张超超OC基础回顾03_结构体类型作为成员变量的特殊用法

    直接上例子: 要求: 合理的设计一个”学生“类 学生有* 姓名* 生日两个属性和说出自己姓名生日方法  要求利用设计的学生类创建学生对象,并说出自己的姓名和年龄 描述学生类 事物名称: 学生(Stud ...

  2. DPF.Android.Native.Components.v2.8.1 for delphi xe6 使用DPFJAlertDialog遇到的问题

    使用DPFJAlertDialog控件时发现DPFJAlertDialog1Click不能捕获到对话框到底按了那个按键,上网搜索后找到了解决方法: 打开DPF.Android.JAlertDialog ...

  3. Matrix和Camera配合实现3D效果

    一.Camera与Matrix简单介绍 1.Camera Android中一共有两个Camera,分别为:android.graphics.Camera android.hardware.Camera ...

  4. WindowsService服务安装脚本

    安装脚本%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\liuyl\WeiXinService\WindowsSe ...

  5. centos7 .net core 使用supervisor守护进程,可以后台运行

    1.安装supervisor yum install supervisor 2.配置supervisor vi /etc/supervisord.conf 拉到最后,这里的意思是 /etc/super ...

  6. Ajax GET

    $ajax的post请求提交方式: Controller: @RequestMapping("/emps") @ResponseBody public Msg getEmps(@R ...

  7. Linux安装Oracle调整tmpfs以突破1.7G的限制

    调整/dev/shm的大小 ---------------------------------------------------------1.查看大小 df -h /dev/shm [@more@ ...

  8. Bitnami WordPress如何修改MySQL root的默认密码?

    Bitnami WordPress安装完毕后,MySQL root的默认密码为空,我们应该马上修改MySQL密码,在开始菜单里面,进入Bitnami ,启动控制台程序,随后输入: mysql -u r ...

  9. 同一个程序里有多个版本的App

    在Xcode中添加多个targets进行版本控制,就是同一个app开发多个版本 以Xcode 9.3 为例 1. 创建 点击左侧工程项目文件,选择TARGETS 下的项目右击选择 Duplicate. ...

  10. Xcode面板的使用

    1.调出打包输出管理界面Xcode->Window->Organizer