Mmaiqai.com
🧵 Automation Testing · Chương 15 · Mục 15.3

Phát hiện: dữ liệu demo công khai dùng chung

Lần chạy thử đầu tiên, bài test còn có thêm 1 dòng so tổng số phòng giữa UI và API:

expect(the_phong).to_have_count(len(danh_sach_phong_api)) # so tong so the phong UI voi tong so phong API

Chạy lên bị FAILED — 2 con số lệch nhau ngay trong cùng 1 lần chạy:

NguồnSố phòng đếm được
API — gọi lúc bắt đầu test4
UI — vừa page.goto() xong3

Vì sao lệch: trang demo công khai cho cả thế giới luyện tập — đúng lúc test đang chạy, có người khác vừa tạo thêm 1 phòng qua API. Không phải bug ứng dụng, mà là rủi ro khi assert trên dữ liệu dùng chung, không kiểm soát được.

Cách sửa: bỏ dòng to_have_count(...), chỉ giữ expect(the_phong.first).to_be_visible() (chờ có ít nhất 1 phòng) — để vòng lặp ở mục 15.2 tự đối chiếu từng phòng đang hiển thị, dù lúc đó là 3 hay 4 phòng cũng không sao.

Chạy:

TERMINAL
pytest tests/test_05_ket_hop_ui_api.py -v

Kết quả:

KẾT QUẢ
tests/test_05_ket_hop_ui_api.py::test_gia_va_ten_phong_tren_trang_chu_khop_voi_api[chromium] PASSED [100%]
 
============================== 1 passed in 5.79s ==============================

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

⚡ GHI NHỚ NHANH
  • Dict comprehension: {key: value for x in list} — cách viết gọn tạo dict từ 1 list.
  • Regex (re.search, \d+, .group()): tìm mẫu chữ/số trong 1 chuỗi văn bản.
  • Flaky test do dữ liệu dùng chung: khác với bug thật của ứng dụng — cần nhận diện đúng để sửa CÁCH TEST, không đi tìm bug không tồn tại.

Chương sau — chương cuối: xuất báo cáo kết quả test và chạy tự động bằng CI.