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ồn | Số phòng đếm được |
|---|---|
| API — gọi lúc bắt đầu test | 4 |
| UI — vừa page.goto() xong | 3 |
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:
pytest tests/test_05_ket_hop_ui_api.py -v
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.
- –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.