Mmaiqai.com
🏗️ Automation Testing · Chương 13 · Mục 13.4

Refactor các test PUT/PATCH/DELETE

Sửa lại tests/test_04_crud_booking.py, thay api_context.put(...) kèm header thủ công bằng client.sua_toan_bo_booking(...):

FILE tests/test_04_crud_booking.py
def test_put_01_sua_booking_co_token(client, booking_tao_moi):
"""PUT-01: sua toan bo booking, co token hop le -> HTTP 200, du lieu duoc cap nhat dung."""
bookingid, _ = booking_tao_moi # chi can id, bo qua du_lieu
du_lieu_moi = {
"firstname": "Da Sua",
"lastname": "Roi",
"totalprice": 999,
"depositpaid": False,
"bookingdates": {"checkin": "2026-11-01", "checkout": "2026-11-02"},
}
response = client.sua_toan_bo_booking(bookingid, du_lieu_moi)
assert response.status == 200 # co token, sua thanh cong
assert response.json()["firstname"] == "Da Sua" # du lieu tra ve dung nhu da sua
 
 
def test_put_02_sua_khong_co_token(client_khong_token, booking_tao_moi):
"""PUT-02: sua booking bang client KHONG co token -> HTTP 403, khong sua duoc."""
bookingid, _ = booking_tao_moi # chi can id, bo qua du_lieu
response = client_khong_token.sua_toan_bo_booking(
bookingid,
{
"firstname": "Hack",
"lastname": "Er",
"totalprice": 0,
"depositpaid": False,
"bookingdates": {"checkin": "2026-01-01", "checkout": "2026-01-02"},
},
)
assert response.status == 403 # khong co token phai bi tu choi

Test ngắn hơn hẳn — không còn dòng gán header Cookie lặp lại, và test_put_02 giờ tự nói lên ý định qua tên fixture client_khong_token, không cần đọc kỹ mới biết đây là trường hợp thiếu token.

test_patch_01, test_del_01, test_del_02 refactor tương tự — đổi api_context.patch(...)/api_context.delete(...) thành client.sua_1_phan_booking(...)/client.xoa_booking(...).