NỘI DUNG BÀI HỌC

✳️Sử dụng PATCH method trong REST Assured
✳️Sử dụng DELETE method trong REST Assured

✅ Sử dụng PATCH method trong REST Assured

Để sử dụng phương thức PATCH thì các bạn gọi hàm request.patch() khi gửi một request.

Ví dụ testing api Update User nhưng chúng ta chỉ cần cập nhật một phần dữ liệu thôi. Thì khi đó dùng hàm patch() thay vì dùng hàm put()

https://api.anhtester.com/swagger/index.html#/User%20Management/updateUserPatch

Đầu tiên tạo class PatchUserPOJO để khai báo các fields cần update. Ví dụ mình bỏ 2 fields username và password ra.

package com.anhtester.model;

public class PatchUserPOJO {

    private String firstName;
    private String lastName;
    private String email;
    private String phone;
    private int userStatus;

    public PatchUserPOJO(String firstName, String lastName, String email, String phone, int userStatus) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.phone = phone;
        this.userStatus = userStatus;
    }

    public PatchUserPOJO() {
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
    
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public int getUserStatus() {
        return userStatus;
    }

    public void setUserStatus(int userStatus) {
        this.userStatus = userStatus;
    }
}

Tạo test case tiến hành test update user với hàm patch()

@Test
public void testUpdateUser_PATCH() {

    //Chuẩn bị data cho edit user
    PatchUserPOJO patchUserPOJO = new PatchUserPOJO();
    patchUserPOJO.setFirstName("Bối");
    patchUserPOJO.setLastName("Bối");
    patchUserPOJO.setEmail("boiboi1@email.com");
    patchUserPOJO.setPhone("0123456789");
    patchUserPOJO.setUserStatus(1);

    Gson gson = new Gson();

    RequestSpecification request = given();
    request.baseUri("https://api.anhtester.com/api")
        .accept("application/json")
        .contentType("application/json")
        .header("Authorization", "Bearer " + TOKEN)
        .body(gson.toJson(patchUserPOJO));

    Response response = request.when().patch("/user/2");
    response.prettyPrint();

    response.then().statusCode(200);

    String message = response.getBody().path("message");
    Assert.assertEquals(message, "Success", "The message not match.");
}

Kết quả:

{
    "message": "Success",
    "response": {
        "id": 2,
        "username": "myduyen4",
        "firstName": "Bối",
        "lastName": "Bối",
        "email": "boiboi1@email.com",
        "phone": "0123456789",
        "userStatus": 1
    }
}


Yeah các bạn thấy là nó chỉ cập nhật các giá trị cho những fields mà mình chỉ định, còn 2 fields usernamepassword nó không cập nhật nhé.

Nhớ gọi hàm loginUser() để lấy giá trị TOKEN trước nhé.

//Khai báo biến toàn tục TOKEN để lưu trữ từ hàm Login
String TOKEN = "";

@BeforeMethod
public void loginUser() {
    LoginPOJO loginPOJO = new LoginPOJO("anhtester", "Demo@123");
    Gson gson = new Gson();

    RequestSpecification request = given();
    request.baseUri("https://api.anhtester.com/api")
        .accept("application/json")
        .contentType("application/json")
        .body(gson.toJson(loginPOJO));

    Response response = request.when().post("/login");
    response.prettyPrint();
    response.then().statusCode(200);

    //Lưu giá trị token vào biến TOKEN nhé
    TOKEN = response.getBody().path("token");
    System.out.println(TOKEN);
}


Các bạn có thể mang hàm loginUser() sang class riêng xong extends lại. Ví dụ BaseTest chẳng hạn.

Tạo class chung chứa biến TOKEN dạng static để dễ gọi dùng.


🔆 Tạo class riêng để lưu TOKEN toàn cục


+ Class TokenGlobal:

package com.anhtester.globals;

public class TokenGlobal {
    public static String TOKEN;
}


+ Class BaseTest:

package com.anhtester.common;

import com.anhtester.globals.TokenGlobal;
import com.anhtester.model.LoginPOJO;
import com.google.gson.Gson;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.annotations.BeforeMethod;

import static io.restassured.RestAssured.given;

public class BaseTest {
    @BeforeMethod
    public void loginUser() {
        LoginPOJO loginPOJO = new LoginPOJO("anhtester", "Demo@123");
        Gson gson = new Gson();

        RequestSpecification request = given();
        request.baseUri("https://api.anhtester.com/api")
                .accept("application/json")
                .contentType("application/json")
                .body(gson.toJson(loginPOJO));

        Response response = request.when().post("/login");
        response.then().statusCode(200);

        //Lưu giá trị token vào biến TOKEN nhé
        TokenGlobal.TOKEN = response.getBody().path("token");
        System.out.println("Token Global: " + TokenGlobal.TOKEN);
    }
}


Gọi lại biến TOKEN toàn cục trong cả project để sử dụng:

import com.anhtester.common.BaseTest;
import com.anhtester.globals.TokenGlobal;
import com.anhtester.model.PatchUserPOJO;
import com.google.gson.Gson;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.Assert;
import org.testng.annotations.Test;

import static io.restassured.RestAssured.given;

public class DemoPATCH extends BaseTest {

    @Test
    public void testUpdateUser_PATCH() {

        //Chuẩn bị data update user
        PatchUserPOJO patchUserPOJO = new PatchUserPOJO();
        patchUserPOJO.setFirstName("Bối");
        patchUserPOJO.setLastName("Bối");
        patchUserPOJO.setEmail("boiboi1@email.com");
        patchUserPOJO.setPhone("0123456789");
        patchUserPOJO.setUserStatus(1);

        Gson gson = new Gson();

        RequestSpecification request = given();
        request.baseUri("https://api.anhtester.com/api")
                .accept("application/json")
                .contentType("application/json")
                .header("Authorization", "Bearer " + TokenGlobal.TOKEN)
                .body(gson.toJson(patchUserPOJO));

        Response response = request.when().patch("/user/2");
        response.prettyPrint();

        response.then().statusCode(200);

        String message = response.getBody().path("message");
        Assert.assertEquals(message, "Success", "The message not match.");
    }
}

 

✅ Sử dụng DELETE method trong REST Assured

Để sử dụng phương thức DELETE thì các bạn gọi hàm request.delete() khi gửi một request.

Ví dụ test case Delete User nhé
https://api.anhtester.com/swagger/index.html#/User%20Management/deleteUser

Code delete user với Rest Assured như sau:

import com.anhtester.common.BaseTest;
import com.anhtester.globals.TokenGlobal;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.Assert;
import org.testng.annotations.Test;

import static io.restassured.RestAssured.given;

public class DemoDELETE extends BaseTest {

    @Test
    public void testDeleteUser_DELETE() {

        //Chuẩn bị thông tin username để delete
        String username = "anhtester3";

        RequestSpecification request = given();
        request.baseUri("https://api.anhtester.com/api")
                .accept("application/json")
                .contentType("application/json")
                .header("Authorization", "Bearer " + TokenGlobal.TOKEN)
                .queryParam("username", username);

        Response response = request.when().delete("/user");
        response.prettyPrint();

        response.then().statusCode(200);

        String message = response.getBody().path("message");
        Assert.assertEquals(message, "Success", "The message not match.");
    }
}


Sau khi delete thì các bạn cần dùng endpoint getUserByUsername để check lại xem đã xoá được chưa. Nếu xoá được thì nó sẽ báo "User not found" sau khi GET.

Teacher

Teacher

Anh Tester

Software Quality Engineer

Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu

Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học