Mmaiqai.com
🗂️ Automation Testing · Chương 12 · Mục 12.4

DELETE — xoá booking, cần token

Thêm vào cuối file:

FILE tests/test_04_crud_booking.py
def test_del_01_xoa_co_token(api_context, auth_token, booking_tao_moi):
"""DEL-01: xoa co token -> HTTP 201, GET lai id do phai tra 404."""
bookingid, _ = booking_tao_moi # chi can id, "_" nghia la bo qua gia tri du_lieu khong dung toi
response = api_context.delete(f"/booking/{bookingid}", headers={"Cookie": f"token={auth_token}"})
assert response.status == 201 # xoa thanh cong tra 201 (khong phai 200/204)
 
response_get_lai = api_context.get(f"/booking/{bookingid}")
assert response_get_lai.status == 404 # goi lai id vua xoa phai khong con
 
 
def test_del_02_xoa_khong_co_token(api_context, booking_tao_moi):
"""DEL-02: xoa khong co token -> HTTP 403, booking van con nguyen."""
bookingid, _ = booking_tao_moi # chi can id, bo qua du_lieu
response = api_context.delete(f"/booking/{bookingid}")
assert response.status == 403 # khong co token phai bi tu choi
 
response_get_lai = api_context.get(f"/booking/{bookingid}")
assert response_get_lai.status == 200 # booking phai con nguyen, chua bi xoa

Chú ý test_del_01: xoá thành công trả HTTP 201 (không phải 200 hay 204 như thường gặp ở API khác) — một quirk nhỏ nhưng dễ viết sai assertion nếu không tự gọi thử trước.

Kết quả:

KẾT QUẢ
tests/test_04_crud_booking.py::test_del_01_xoa_co_token PASSED
tests/test_04_crud_booking.py::test_del_02_xoa_khong_co_token PASSED
 
======================= 2 passed in 3.00s =======================

Chạy toàn bộ file:

TERMINAL
pytest tests/test_04_crud_booking.py -v

Kết quả:

KẾT QUẢ
============================= 11 passed in 6.86s ==============================

Đến đây, bạn đã hoàn thành Checkpoint 5 — khớp với commit 08a3fa3 trên GitHub.

Chương sau: chuẩn hoá lại toàn bộ code đã viết thành 1 framework nhỏ — tách api_client.py, gộp các test giống khuôn bằng @pytest.mark.parametrize.