基於Http請求的介面測試
阿新 • • 發佈:2018-12-11
- 引入maven依賴
<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>
- 啟動web服務
- 新增單元測試用例
@Before
public void setup() {
RestAssured.baseURI = "https://127.0.0.1:6443/as-api";
RestAssured.basePath = "/api/v1";
//單項認證允許所有客戶端通過
//RestAssured.useRelaxedHTTPSValidation();
}
Rest-Assured 可以直接在 GET 的時候,同時進行驗證。如下例子:
@Test public void test1() { given() .param("param", "1223434") .expect() .statusCode(200) .body("challenge", equalTo("1223434")) .when() .get("/test2"); }
或者這樣(是不是發現特別靈活,一般情況下,通過一個鏈式呼叫就可以完成一次API的測試
get("/test2?param=1223434").then().body("challenge", equalTo("1223434"));
post請求
@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體裡面的內容是不是和自己預判的一樣。並且在特別情況下還可以檢測請求時間是不是超過我們的預期。 檔案上傳
@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跟我們提供了更好的封裝,降低我們犯錯的機率,使我更高效率的投入到我們業務中。
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進行查詢使用。 具體詳見測試用例原始碼