首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2019-05-31 使用 REST-Assured 测试 REST API 的进阶技巧和最佳实践

从本质上说,REST API 的测试主要是测试 HTTP 的 GET/POST/DELETE/PUT 这几个方法。其中,最复杂的主要是 GET 和 POST/PUT 两种情况。...POST/PUT 方法主要测试发送过去的请求体是否能通过验证,并且是否根据请求体创建或修改相应的内容。这里的难点是请求体的复杂性,以及需要测试请求体中 property 的各种参数组合。...像上面这个例子中的 badgeNumber,如果在返回体中这个属性的值如果是整数型,就能使测试失败,如果这个属性的值以字母开头,同样会使测试失败。...在测试 POST/PUT 方法时,最麻烦的地方是请求体中 property 非常多,而且各自有不同的限制条件。为了测试非法的输入能正确被系统识别出来,要测试很多参数组合。...我们可以使用 Combinatorial Testing(又称 All-pairs testing)的方法来得到参数组合,然后使用 Rest-Assured 进行测试。

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何确保API 的稳定性与正确性?你只需要这一招

从某种角度来说,这是一种“白盒测试”,Java 程序员清楚地知道正在测试的是哪个类、哪个方 法,不是从用户的角度出发,测试的是哪个REST API。...如果是POST请求,就要在车上贴上POST的标签,并把货物放 在车厢里。...当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。HTTP只是个行为准则,TCP才是GET和POST怎么实现的基本。...ResponseSpecification重用例如,你想在多个测试用例中,都使用这样的断言:判断响应状态码是否为200,并且Json数组"x.y"的大小是否 等于2。...需要重用的两个断言数据被定义在"responseSpec",并且与另外一个body断言合并,组成了这 个测试用例中全部的断言,那么这个测试用例需要全部断言都通过用例结果才会通过,一旦其中一个断言失 败,则测试用例的测试结果为失败

1K20

接口测试框架之Karate

因为接口调用完成后,需要对接口调用结果进行校验,可能是校验接口Response Body中的内容是否于数据库数据相等,也可能是直接查看数据库数据是否正确,数据落入一般晚于接口调用完成,所以在很多地方需要添加默认等待机制...例如如下小例子 * def foo = ['bar', 'baz'] # 校验foo是一个数组 * match foo == '#[]' # 校验foo是一个长度为2的数组 * match foo ==...'#[2]' # 校验foo是一个长度为2的数组,且数组的值都是string类型 * match foo == '#[2] #string' # 数组中每个element都有个length 属性,且length...但对于一个复杂系统,接口测试中需要覆盖的场景不紧紧是接口调用本身,Karate中“核心脚本都在Feature文件中”的特点恰恰让该工具出现了局限性,例如调用Java方法,连接数据库等。...技术雷达中对该框架的详细描述是“Karate是一个API测试框架,其特殊之处是直接用Gerkin编写不依赖任何通用编程语言。

3.7K30

利器 | 接口自动化测试框架 RESTAssured 实践(三)对 Response 结果导出

上一篇文章中介绍了rest-assured对返回结果的断言,最后说明了对于Response结果导出的需求。可查看往期文章进行查看。...StatusCode是:\n"+response.getStatusCode()); } 运行结果: 5)获取cookies——getCookies()、getCookie(“cookieName”) rest-assured...还为我们提供了方便的获取cookie的方法;本例中无cookies返回,所以仅展示代码语法,有需要的可自行测试或参考官方文档 // Get all cookies as simple name-value...上述这些已几乎可满足日常工作所需,如有需要可在官网进一步研究,官网还提供了获取同名多值的header和cookie等方法: 相关参考链接: RESTAssured 官方文档: https://github.com/rest-assured.../rest-assured/wiki/Usage

41630

REST-assured 获取日志到文件并结合 Allure 报告进行展示

,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjYzNTA5MQ==,size_16,color_FFFFFF,t_70#pic_center] 使用 Rest-assured...当我们的用例失败时,特别是接口失败时,请求日志是分析原因的第一手资源。那如何将 Rest-assured 产生的日志存入 Allure 里,并且能和用例一一对应起来呢? 1....text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjYzNTA5MQ==,size_16,color_FFFFFF,t_70#pic_center] 我们可以看到在生成的报告中只有断言信息,没有请求的日志信息...,当我们的用例失败时,特别是接口失败时,请求日志是分析原因的第一手资源; 1.2 需求产生 其实Rest-assured是有请求日志的,可以通过在given()和then()后面加上.log().all...接下来就是要想法办将 Rest-assured 产生的日志存入文件了; 整体思路: 【Rest-assured打印日志】- 【Rest-assured日志存入文件】- 【文件以附件形式传入Allure】

1.1K20

如何选择API测试工具

Rest-Assured 如果您使用的是Java,则Rest-Assured将是实现API自动化的首选。 Rest-assured是一个流行的Java库,可用于测试基于HTTP的REST服务。...这是使用REST-Assured的另一个原因,因为它将Java语言中使用这些语言的简便性带给了您。 如果团队主要由Java开发人员组成,对API测试来说Rest-Assured是非常不错的选项。...如果刚好跟开发语言不通,则需要考虑Postman进行一些快速简单的API测试,不必担心其他的开销。Postman还是探索型API测试的不错选择。...JMeter 尽管JMeter是为进行负载测试创建的,但许多人也将其用于功能API功能和自动化测试。JMeter包括帮助您测试API所需的所有功能,以及一些可用来增强API测试工作的额外功能。...(验证者提供了一种轻量级的方法来判断测试的成功或失败) 对于更多的核心API测试开发,您可以使用FiddlerCore.NET类库来构建其API测试基础结构。

90320

如何选择API测试工具,看这篇就够了

REST-Assured 在使用Java时,Rest-Assured是我们实现API自动化测试的首选,下面我们看下REST-Assured介绍: REST Assured是一个可以简化...它支持发起POST,GET,PUT,DELETE,OPTIONS,PATCH和HEAD请求,并且可以用来验证和校对这些请求的响应信息。...官方手册:https://github.com/rest-assured/rest-assured/wiki/Usage Postman 很多情况下,测试人员并不具备编程开发能力,对于他们而言...Swagger 和 RAML 格式 可以运行、测试,并拥有文档和监控功能 不需要学习新的语言 SoapUI SoapUI已经存在一段时间了,如果你的团队只进行API测试,并且主要由测试工程师不是开发人员组成的话...官方手册:http://jmeter.apache.org/ Jenkins 上述已经介绍了几款常用的API测试工具,但却缺乏一个基础设施,那就是持续集成的基础,Jenkins作为国内大家所熟知的工具

1.6K20

技术应用|用于 REST API 开发和测试的 10 大工具

Postman简介:Postman是一个接口测试工具,可以模拟用户发起的各类HTTP请求,如GET、POST、DELETE、PUT等。...它支持HTTPS认证,并且支持HTTP的POST、PUT等方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http...Rest-Assured的语法非常简洁,是一种专为测试REST API而设计的DSL。...使用Rest-Assured测试REST API,和真正的用户使用REST API一样,只不过Rest-Assured让这一切变得自动化了。...Swagger的目标是为REST APIs定义一个标准的、与语言无关的接口,使人和计算机能发现和理解各种服务的功能,不需要看到源码或文档。

62600

利器 | REST Assured 实践(二):断言实现

REST Assured 提供的完整断言手段,是测试工程师最常用最重要的功能之一。断言该如何使用呢?...这里以 rest-assured 官方给的一个示例做演示学习 { "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners..."lotto.winners.winnerId",hasItems(54,23)); } 索引取值 1)如果我们想要取某些相同字段中的某一个,可以使用类似索引的方式获取,例如想要断言 winners 数组下面的...; } 运行结果: String类型的默认值为null,后端很有可能在某个字段无值时返回null,例如我们将之前添加的winnername字段返回null: 运行查看断言结果: 很明显用例执行失败...,当我们定义了winnername为String类型后,返回null就会断言失败,这显然不符合我们的需求,会造成用例执行结果的误判,这个时候我们需要使winnername即可以为String类型,又可以为

1.2K40

json-server : 前端工程师的小伙伴!

引子 你是否曾为了前端开发需要依赖后端接口烦恼?是否曾接口未开发完成垂头丧气?是否曾梦想能自己制作一个玩具服务器,随心所欲地调试接口? “json-server”!...3000/unicorns 检查你最爱的 Rosa:http://localhost:3000/unicorns/1 路由规则 GET /unicorns GET /unicorns/:id POST...参数的集合 简洁实用,你的各种筛选,排序,限额需求,json-server一概包揽: 筛选 条件只要下面这些,瞬间体验扔掉数学的解脱感: → == _lt → < _lte → <= _gt → >..._sort=id,_desc 其他高级操作 嵌套字段和数组字段让你能轻松获取你需求的内容: GET /unicorns?...color=Pink&name=rosa 内嵌其他字段,将嵌套的数据一次性取来: GET /unicorns?

9110

如何实现Java后端数据校验?看这篇就足够!

不能为null Null 必须为 null Pattern(value) 被注释的元素必须符合指定的正则表达式 Size(max, min) 检查该字段的size是否在min和max之间,可以是字符串、数组...快速失败返回模式 快速失败返回模式(只要有一个验证失败,则返回) 两种验证模式配置方式:参考 hibernate 官方文档 failFast:true 快速失败返回模式...保存对参数的校验结果 * @return */ @RequestMapping(value = "validation", method = RequestMethod.POST...) private String mobile; } Controller @RequestMapping(value = "create", method = RequestMethod.POST...doSomething } 通过分析上面的代码,我们来理解Hibernate Validator校验框架的使用,其中,username属性,表示只有新增/保存的时候,才会校验username属性,email

13.2K72
领券