这一篇来开始进行一个Eclipse项目的创建,我们选择一个Maven项目工程,然后添加RestAssured这个框架和周边相关的框架的依赖,最后大致介绍以下这些依赖组建的作用。
在开始之前,这里介绍一下最新(2019年3月以上)的Eclipse不能从Eclipse市场找到,也不能从install software中下载TestNG的这个问题。
1)打开 http://dl.bintray.com/testng-team/testng-eclipse-release/
2)点击底部 zipped 链接
3)点击下载2019年最新的TestNG版本下载 6.14.3.201902250526
4)下载 zip包 到本地,例如桌面 org.testng.eclipse.updatesite.zip
5)利用解压工具,直接解压到 E:\eclipse\dropins , 我Eclipse放在 E:\eclipse
这个工具直接解压很重要,千万要用这个方法。我尝试过解压到桌面,然后复制到dropins文件夹下,不行
6)重新启动Eclipse软件,选一个包,右键 new-others..-TestNG class,说明TestNG安装成功。
1.Eclipse上创建一个maven工程
New-project(选择maven工程),选择快速创建
填入必要的字段,点击finish
必要字段参考我这里的,随便写都可以。
<modelVersion>4.0.0</modelVersion>
<groupId>com.restassured</groupId>
<artifactId>RestAssured</artifactId>
<version>0.0.1-SNAPSHOT</version>
2.pom.xml 完整内容
以下pom.xml全部内容,每个依赖前面都添加这个下载地址,可以对照maven仓库看看,了解下,具体组件什么功能,也用一句话添加了注释。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.restassured</groupId>
<artifactId>RestAssured</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
<!-- use to parse json document -->
<!-- https://mvnrepository.com/artifact/io.rest-assured/json-path -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.rest-assured/json-schema-validator -->
<!-- validate a json response conforms to a Json schema -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.rest-assured/xml-path -->
<!-- use to parse xml document -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hamcrest/java-hamcrest -->
<!-- match rules in assertion -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>java-hamcrest</artifactId>
<version>2.0.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
2.Rest Assured基本功能第一个例子-判断响应状态码
在src/test/java下创建一个demo包,新建一个BasicFeatures.java文件,代码如下。
package demo;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
public class BasicFeatures {
/**
* 简单检查响应状态码
*/
@Test
public void testStatusCode() {
given().
get("https://www.baidu.com").
then().
statusCode(200);
}
}
运行下这个TestNG class, 成功。
3.解释下第一个用例中的语法
下面这个代码
public void testStatusCode() {
given().
get("https://www.baidu.com").
then().
statusCode(200);
}
1) given() 是RestAssured类下一个方法,所以官方文档强烈推荐我们使用静态导入语句。这个given()方法是什么作用,我们暂时不去深挖,后面来介绍。
2)get方法,里面参数是url,这个明显看得出来是发送请求用的,至于get是不是对标GET类型,这个问题,我们放下,后面来回答。
3)then() 又是一个方法,其实在given()前面还有一个with()方法,这些我们现在都不去计较什么意思。
4)statusCode(200) 这个方法名称就看得出来,是判断响应状态码是不是等于200.
整个代码的大概意思,我们明白了。现在讨论下这种写法的好处,什么写法,就是一个方法后面利用点串联起来,形成一个句子一样。这种特点,有点像lambda表达语法效果。除了这个,也有一点像groovy这种胶水语言。通过这个例子,我明白了Rest Assured首页的这句话的含义。
Testing and validating REST services in Java is harder than in dynamic languages
such as Ruby and Groovy.
REST Assured brings the simplicity of using these languages into the Java domain.
意思就是有了Rest Assured框架,我们可以向groovy ruby这种动态语言一样去写REST 服务的接口测试验证工作。如果还是不能体会这种写法的简洁和代码量,这里我用Java风格来重新写上面的测试用例。
/**
* Java原本风格的写法
*/
@Test
public void testStatusCodeJavaStyle() {
//1. 创建一个RestAssured对象
RestAssured ra = new RestAssured();
//2. 创建一个请求对象
RequestSpecification rs = ra.given();
//3. 发送请求,拿到响应对象
Response res = rs.get("https://www.baidu.com");
//4. 判断响应状态码是不是200
assert res.getStatusCode() == 200;
}
上面四行代码就是纯Java的思维和风格来写的测试用例,对比一下,一个4行代码,一个1行代码就搞定。为什么1行代码能搞定,Rest Assured中使用了Groovy的语法和功能。我们可以在下图找到Rest Assured使用了groovy和httpclient框架
这种更多层的封装,最后我们就可以一行代码写完一个接口的测试用例。