🗂️ 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 toiresponse = 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 condef 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_lieuresponse = api_context.delete(f"/booking/{bookingid}")assert response.status == 403 # khong co token phai bi tu choiresponse_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 PASSEDtests/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.