Rest-Assured接口自动化测试简单笔记

接口自动化测试

1.准备工作:

IntelliJ IDEA  JDK 1.8.0  

Json格式化工具: 浏览器chrome安装JSONHandler

Java+maven+TestNG+junit+rest-assured

抓包charles

请求工具:postman

2.为什么要进行接口测试?

接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求

3.测试流程

a.需求分析

b.根据需求梳理接口测试点(评估测试周期)

c.检查服务端接口入参和实参是否缺少参数(如果不正确需要服务端矫正)

d.进行接口测试(实际验证点1.接口的业务逻辑json解析,2.return code 3.message 4.字段类型 5.包装接口调用业务方源接口数据正确性)(自动化灰盒脚本)

e.接口测试报告输出)

4.接口自动化目前试用的场景

   1)测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断

 2)回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行tesNGt报告已钉钉方式通知

5.搭建环境

1首先安装JDK 1.6以上,intellij IDEA,创建Maven工程New->NewProject->Maven->

  勾选create from archetype

输入项目名称下一步下一步完成如下图所示,一个完整的maven项目如图所示目录结构!

接下需要project配置File->project Structure


Modeules导入项目模块:import modeules-选择项目pom.xml

Libraries导入maven jar包

artifact是一个工具包:web application exploded->form module

6.开启第一个rest-assuredDemo实现之前我们先了解一下rest-assured方法

 a.response常用方法:

  response.asString()--获取请求返回内容体

   response.response.getContentType()--获取响应的内容类型

   response.getStatusCode()--获取响应的状态代码

   response.getHeaders()--获取所有响应头信息

   response.getHeader(String name)-- 根据指定的header名称,获取对应的响应信息

response.getCookie(String name)-- 根据指定的cookie名称,获取对应cookie的值

response.getCookies()--获取所有cookies信息

response.getTime()--响应时间(单位:毫秒)

b.获取节点一些节点验证方法:

1.response.then().body("returncode", equalTo(0));--return code是否等于0

2.response.getBody().prettyPrint();//格式化打印JSON数据

3.given().param("p1", "0").param("p2", "1").get("www.baidu.com");-URL参数(拼接www.baidu.com/p1=0&p2=1);

4.when().get("www.baidu.com/p1=0&p2=1").then().time(lessThan(100L),TimeUnit.MILLISECONDS);//判断响应时间是否少于预期值。

5.assured断言数据处理:get("/lotto").then().body("lotto.lottoId", equalTo(5)); 这个判断lotto下面lotto.lottoId节点是否是5

Assert.assertEquals(bmessage, "海报");---预期和实际值是否一致

get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54)); 

/lotto下面lotto.winners.winnerId是否包含2354

6.given().param("name","clq").then().statusCode(200).body("id", equalTo(2),"content", containsString("Hello").when().get("/greeting");

(参数name,当我发送get请求之后,那么你给我返回响应码200,并且id=2contenthello)

7.rdposturl.startsWith("https://rdx")-确定此字符串实例的开头是否与指定的字符串匹配.

8. rdposturl.endsWith(".jpg")-确定此字符串实例的末尾是否.jpg图片

9. JsonPath yloan = get(yurl).getBody().jsonPath().setRoot("result");-获取整个节点的数据

10.response.getBody().jsonPath().getString("returncode")--获取某一个节点的值(如:return code

11. get(url).then().assertThat().statusCode(200);--判断url返回的code码是否为200等等

12. Assert.assertNotNull(res.getBody().jsonPath().getString("result.orderguid"));Assert.assertNotNull(res.getBody().jsonPath().get("result.orderno"));

(/两个是判断断言下面值不能为空)

13.privateLogger logger = LoggerFactory.getLogger(AskDealersPricePvid.class);--打印错误log日志方法

14. List<String> titles = jsonPath.getList("topics.title")-获取所有列表标题信息;

c.使用rest-assured之前必须pom.xml引入jar包

<!--Rest assured依赖包-->

<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>spring-mock-mvc</artifactId>
    <version>3.0.1</version>
</dependency>

<dependency>
  <groupId>com.jayway.restassured</groupId>
  <artifactId>rest-assured</artifactId>
  <version>2.3.3</version>
  <scope>test</scope>
</dependency>

<!—junitjra-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>RELEASE</version>
</dependency>

<!—打印日志依赖包-->

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

<!—生成testng报告依赖包-->

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.8</version>
    <scope>test</scope>
</dependency>

<!—默认的jdk版本来进行处理,这样就容易出现版本不匹配的问题,以至于可能导致编译不通过的问题. 例如代码中要是使用上了jdk1.7的新特性,但是maven在编译的时候使用的是jdk1.6的版本,那这一段代码是完全不可能编译成.class文件的-->

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.3</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>

 

<!—dns实现更换测试环境jar-->

<dependency>
    <groupId>io.leopard</groupId>
    <artifactId>javahost</artifactId>
    <version>0.3</version>
</dependency>

d.开启第一个测试类Get请求

import io.restassured.response.Response;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.IOException;
import static io.restassured.RestAssured.get;


e.post请求:params入参)


7.具体rest:-assured参考api:

http://blog.csdn.net/wx19900503/article/details/54944841 


  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG 是一种流行的测试框架,它提供了丰富的功能来进行单元测试、集成测试和端到端测试。TestNG 结合 TestAssured 可以进行接口自动化测试,以下是 TestNG TestAssured 接口自动化测试框架的优点: 1. 简单易用:TestNG TestAssured 框架易于学习和使用。TestNG 的注解可以方便地对测试用例进行分组、依赖、优先级等操作,而 TestAssured 提供了直观的 API,可以轻松地完成接口测试。 2. 支持多种验证方式:TestAssured 提供了多种验证方式,如 body、header、cookie、statusCode、responseTime 等,可以全面地验证接口的正确性。 3. 支持数据驱动:TestNG TestAssured 框架可以通过数据驱动的方式进行接口测试,可以通过 Excel、CSV、JSON 等数据源进行参数化测试,提高了测试效率和覆盖率。 4. 支持并发测试:TestNG TestAssured 框架支持并发测试,可以提高测试效率。可以通过 TestNG 的 parallel 属性来设置并发线程数,也可以通过 TestAssuredRestAssured.config() 方法来设置并发连接数。 5. 集成度高:TestNG TestAssured 框架可以与其他测试工具和框架集成,如 Maven、Jenkins、ExtentReports 等,可以方便地进行持续集成和测试报告生成。 总之,TestNG TestAssured 接口自动化测试框架具有易用性高、多种验证方式、数据驱动、并发测试、集成度高等优点,是进行接口自动化测试的不二选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值