<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>3.0.0</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency>
@Before public void setup() { RestAssured.baseURI = "https://127.0.0.1:6443/as-api"; RestAssured.basePath = "/api/v1"; //单项认证容许全部客户端经过 //RestAssured.useRelaxedHTTPSValidation(); }
Rest-Assured 能够直接在 GET 的时候,同时进行验证。以下例子:java
@Test public void test1() { given() .param("param", "1223434") .expect() .statusCode(200) .body("challenge", equalTo("1223434")) .when() .get("/test2"); }
或者这样(是否是发现特别灵活,通常状况下,经过一个链式调用就能够完成一次API的测试git
get("/test2?param=1223434").then().body("challenge", equalTo("1223434"));
post请求github
@Test public void test() { Map<String, Object> map = new HashMap<>(); map.put("mode", 2); map.put("id", "23452345234"); map.put("identity", "11111111"); map.put("challenge", "s234523452345g"); map.put("response", "98CF0059D520E39E2016EB3AC70763BB26B665D77CD81378F11E5479E7094ACD"); map.put("sign", "1232321"); given() .contentType(ContentType.JSON) .request() .body(JSON.toJSONString(map)) .post("/test").then().assertThat() .body("mode", equalTo("2"),"id",equalTo("23452345234")).time(lessThan(1000L), TimeUnit.SECONDS); }
其中第一个body体是requestBody,第二个body是responseBody,并且能够直接断言相应body体里面的内容是否是和本身预判的同样。而且在特别状况下还能够检测请求时间是否是超过咱们的预期。 文件上传web
@Test public void testFile() { Response post = RestAssured.given() .given().param("id", "sdfgfsdg").multiPart("file1", new File("d:/pic.png")) .post("/apply/upload.do"); System.out.println(post.asString()); }
若是你是双向认证只须要这样一个链式调用就OK了,若是使用HttpUrlConention或者httpclient可不止这一行程序可以解决问题的,固然这并非说httpclient很差用,只能说,Rest-assured跟咱们提供了更好的封装,下降咱们犯错的概率,使我更高效率的投入到咱们业务中。api
RestAssured.authentication = RestAssured .certificate("clq.truststore", "123456","clq.p12", "123456", CertificateAuthSettings .certAuthSettings() .keyStoreType("PKCS12") .trustStoreType("jks"));
这里只简单列举基于get和post以及HTTP(S)请求,从中能够看出rest-assured的确语法简单好用。 其中他还提供不少好用的API,例如操做头部或者Cookie,或者在调用的过程种改变端口号等功能。这些咱们均可以根据API进行查找使用。 具体详见测试用例源码app