Với các yêu cầu và bài kiểm tra mẫu cho GET, POST, PUT, PATCH, DELETE

Rest Assured là thư viện java để thử nghiệm các dịch vụ Web Restful. Nó có thể được sử dụng để kiểm tra các dịch vụ web dựa trên XML và JSON. Nó hỗ trợ các yêu cầu GET, POST, PUT, PATCH, DELETE, OPTIONS và HEAD và có thể được sử dụng để xác thực và xác minh phản hồi của các yêu cầu này. Ngoài ra, nó có thể được tích hợp với các khuôn khổ thử nghiệm như JUnit, TestNG, v.v.

Điều kiện tiên quyết: Java, IDE (Eclipse, IntelliJ, etc), Maven & TestNG

Các bước để tạo dự án cho Kiểm tra API: Đầu tiên tạo một dự án maven và thêm các phần phụ thuộc vào pom.xml. Sau đó, tạo tập lệnh thử nghiệm của bạn, xác minh và chạy nó.

1. CONFIGURE TESTNG & REST ASSURED

Sau khi tạo dự án maven của bạn, hãy thêm các phụ thuộc vào pom.xml.

Maven dependency for rest assured 
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>4.3.0</version>
    <scope>test</scope>
</dependency>
Maven dependency for testng
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.1.0</version>
    <scope>test</scope>
</dependency>

Hãy xem một số yêu cầu và bài kiểm tra mẫu cho GET, POST, PUT, PATCH & DELETE. Nhưng trước đó, hãy xem các phương pháp GET, POST, PUT, PATCH & DELETE này là gì.

2. PHƯƠNG THỨC – METHOD

Các phương thức HTTP (GET, PUT, POST, PATCH và DELETE) và các phương thức này có thể được ánh xạ tới các hoạt động CRUD.

  • GET truy xuất tài nguyên tại một URI được chỉ định.
  • PUT cập nhật tài nguyên tại một URI được chỉ định. Cũng được sử dụng để tạo một tài nguyên mới tại một URI được chỉ định. Thay thế toàn bộ thực thể sản phẩm.
  • PATCH hỗ trợ cập nhật một phần.
  • POST tạo một tài nguyên mới.
  • DELETE xóa một tài nguyên tại một URI được chỉ định.

GET : Request (Response : 200)

{
   "page":2,
   "per_page":6,
   "total":12,
   "total_pages":2,
   "data":[
      {
         "id":7,
         "email":"michael.lawson@reqres.in",
         "first_name":"Michael",
         "last_name":"Lawson",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/follettkyle/128.jpg"
      },
      {
         "id":8,
         "email":"lindsay.ferguson@reqres.in",
         "first_name":"Lindsay",
         "last_name":"Ferguson",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/araa3185/128.jpg"
      },
      {
         "id":9,
         "email":"tobias.funke@reqres.in",
         "first_name":"Tobias",
         "last_name":"Funke",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg"
      },
      {
         "id":10,
         "email":"byron.fields@reqres.in",
         "first_name":"Byron",
         "last_name":"Fields",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/russoedu/128.jpg"
      },
      {
         "id":11,
         "email":"george.edwards@reqres.in",
         "first_name":"George",
         "last_name":"Edwards",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/mrmoiree/128.jpg"
      },
      {
         "id":12,
         "email":"rachel.howell@reqres.in",
         "first_name":"Rachel",
         "last_name":"Howell",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/hebertialmeida/128.jpg"
      }
   ],
   "ad":{
      "company":"StatusCode Weekly",
      "url":"http://statuscode.org/",
      "text":"A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."
   }
}
package com.restassured.api;

import org.testng.Assert;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import static org.hamcrest.Matchers.*;

public class Test01_Get {

	@Test
	public void test() {

		Response response = RestAssured.get("https://reqres.in/api/users?page=2");
		System.out.println(response.statusCode());
		System.out.println(response.asString());
		System.out.println(response.getBody().asString());
		System.out.println(response.statusLine());

		int statusCode = response.getStatusCode();
		Assert.assertEquals(statusCode, 200);

	}

	@Test
	public void test1() {

		given().get("https://reqres.in/api/users?page=2").then().statusCode(200).body("data.id[0]", equalTo(7));

	}

}
package com.restassured.api;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class Test01_Get {

	@Test
	public void test1() {

		given().get("https://reqres.in/api/users?page=2").then().
		statusCode(200).
		body("data.id[1]", equalTo(8)).
		body("data.first_name", hasItems("Michael","Lindsay")).
		log().all();

	}

}

POST : Request (Response : 201)

JSON library (Other libraries : gson,jackson,json,Simple json)
<dependency>
 <groupId>com.googlecode.json-simple</groupId>
 <artifactId>json-simple</artifactId>
 <version>1.1.1</version>
</dependency>
{
   "page":1,
   "per_page":6,
   "total":12,
   "total_pages":2,
   "data":[
      {
         "id":1,
         "email":"george.bluth@reqres.in",
         "first_name":"George",
         "last_name":"Bluth",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
      },
      {
         "id":2,
         "email":"janet.weaver@reqres.in",
         "first_name":"Janet",
         "last_name":"Weaver",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
      },
      {
         "id":3,
         "email":"emma.wong@reqres.in",
         "first_name":"Emma",
         "last_name":"Wong",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg"
      },
      {
         "id":4,
         "email":"eve.holt@reqres.in",
         "first_name":"Eve",
         "last_name":"Holt",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"
      },
      {
         "id":5,
         "email":"charles.morris@reqres.in",
         "first_name":"Charles",
         "last_name":"Morris",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/stephenmoon/128.jpg"
      },
      {
         "id":6,
         "email":"tracey.ramos@reqres.in",
         "first_name":"Tracey",
         "last_name":"Ramos",
         "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg"
      }
   ],
   "ad":{
      "company":"StatusCode Weekly",
      "url":"http://statuscode.org/",
      "text":"A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."
   }
}
package com.restassured.api;

import static io.restassured.RestAssured.given;
import org.json.simple.JSONObject;
import org.testng.annotations.Test;

public class Test02_Post {

	@Test
	public void test2() {

		JSONObject request = new JSONObject();
		request.put("name", "chaya");
		request.put("job", "BA");

		System.out.println(request);
		System.out.println(request.toString());

		given().
		body(request.toJSONString()).
		when().
		post("https://reqres.in/api/users").
		then().statusCode(201 );

	}

}

Trạng thái phản hồi HTTP được nhóm thành năm lớp:

  1. Informational responses (100199),
  2. Successful responses (200299),
  3. Redirects (300399),
  4. Client errors (400499),
  5. Server errors (500599)
200 : OK : Request has succeeded
201 : Created : Request has succeeded and a new resource has been created

PUT : Request (Response : 200)

{
   "data":{
      "id":2,
      "email":"janet.weaver@reqres.in",
      "first_name":"Janet",
      "last_name":"Weaver",
      "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
   },
   "ad":{
      "company":"StatusCode Weekly",
      "url":"http://statuscode.org/",
      "text":"A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."
   }
}
package com.restassured.api;

import static io.restassured.RestAssured.given;
import org.json.simple.JSONObject;
import org.testng.annotations.Test;

public class Test03_Put {

	@Test
	public void test2() {

		JSONObject request = new JSONObject();
		request.put("name", "chaya");
		request.put("job", "BAA");

		System.out.println(request);
		System.out.println(request.toString());

		given().
		body(request.toJSONString()).
		when().
		put("https://reqres.in/api/users/2").
		then().statusCode(200);

	}

}

PATCH : Request (Response : 200)

{
   "data":{
      "id":2,
      "email":"janet.weaver@reqres.in",
      "first_name":"Janet",
      "last_name":"Weaver",
      "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
   },
   "ad":{
      "company":"StatusCode Weekly",
      "url":"http://statuscode.org/",
      "text":"A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."
   }
}
package com.restassured.api;

import static io.restassured.RestAssured.given;
import org.json.simple.JSONObject;
import org.testng.annotations.Test;

public class test_patch{

	@Test
	public void test2() {

		JSONObject request = new JSONObject();
		request.put("name", "chaya");
		request.put("job", "BAA");

		System.out.println(request);
		System.out.println(request.toString());

		given().
		body(request.toJSONString()).
		when().
		patch("https://reqres.in/api/users").
		then().statusCode(200);

	}

}

DELETE : Request (Response : 204)

{
   "data":{
      "id":2,
      "email":"janet.weaver@reqres.in",
      "first_name":"Janet",
      "last_name":"Weaver",
      "avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg"
   },
   "ad":{
      "company":"StatusCode Weekly",
      "url":"http://statuscode.org/",
      "text":"A weekly newsletter focusing on software development, infrastructure, the server, performance, and the stack end of things."
   }
}
package com.restassured.api;

import static io.restassured.RestAssured.given;

import org.json.simple.JSONObject;
import org.testng.annotations.Test;

public class Test05_Delete {

	@Test
	public void test3() {

		JSONObject request = new JSONObject();
		given().
		body(request.toJSONString()).
		when().
		delete("https://reqres.in/api/users/2").
		then().statusCode(204).
		log().all();

	}

}

Tôi nghĩ, bài viết này sẽ giúp bạn có một khởi đầu đơn giản trong thử nghiệm API với REST Assured.
Chúng ta hãy gặp gỡ với một bài viết thú vị khác trong một loạt bài.
ĐẾN KHI THỬ NGHIỆM VUI VẺ !!!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Copy link
Powered by Social Snap