Tự động hoá kiểm thử với Python + Playwright — cơ bản cho người chưa biết code
Tài liệu miễn phí dành cho Tester/QA chưa biết viết code — dạy lại Python từ đầu, rồi dùng Playwright để tự động hoá cả kiểm thử giao diện (UI) lẫn API, viết test bằng pytest, và chuẩn hoá thành 1 framework nhỏ.
Toàn bộ code thực hành: github.com/mmai99/book4-api-automation
16 chương (56 mục)
Cài Python + VS Code, tạo và kích hoạt môi trường ảo (venv), viết file Python đầu tiên với 4 kiểu dữ liệu cơ bản.
Viết hàm để gói code dùng lại nhiều lần, dùng list/dict — 2 kiểu dữ liệu gặp liên tục khi làm API — và chuyển đổi dict Python với JSON.
Cài Playwright cho Python + Chromium, hiểu vì sao dùng pytest thay vì chạy trực tiếp bằng python, viết và chạy test Playwright đầu tiên.
3 lớp kiến trúc của Playwright (Browser → Context → Page), tự viết script mở trình duyệt thật bằng sync_playwright, chụp ảnh màn hình bằng code.
Locator là gì và vì sao Playwright ít bị "flaky" hơn công cụ cũ, dùng fill()/click() để điền form và bấm nút, viết bài test UI đầu tiên.
Web-first assertion của Playwright khác assert thường của Python thế nào, thêm bài test thứ 2, vài assertion hay dùng khác ngoài to_be_visible().
APIRequestContext khác Page ở chỗ nào, gọi API thật bằng .get(), đọc response.status và response.json() — bắt đầu chuyển hướng sang test API.
expect(response) có gì và không có gì, kiểm tra 1 status code cụ thể bằng assert thường, đọc hiểu thông báo lỗi thật khi test API FAILED.
Fixture giải quyết vấn đề gì, phân biệt scope="session" và mặc định, setup/teardown qua yield, và cách 1 fixture dùng lại fixture khác.
Đọc tài liệu API chính thức, gọi thử bằng curl để xác nhận hành vi thật thay vì đoán theo tài liệu, lập bảng test case hoàn chỉnh cho các chương sau.
Viết đủ 5 test case AUTH-01 → AUTH-05, thêm fixture auth_token đăng nhập 1 lần dùng lại token cho các chương sau.
Viết đủ test GET/POST/PUT/PATCH/DELETE cho /booking, thêm fixture tạo booking riêng cho từng test, phát hiện 2 hành vi thật thú vị của API.
Nhận ra chỗ code lặp, tách class api_client.py dùng chung, gộp các test AUTH giống khuôn bằng @pytest.mark.parametrize.
Vì sao đôi khi cần test UI và API trong cùng 1 bài kiểm tra, tìm endpoint API thật để dùng cho chương sau.
Viết 1 test dùng cả page (UI) và APIRequestContext (API) trong cùng 1 hàm, vì sao không nên assert tổng số lượng trên dữ liệu demo dùng chung.
Xuất báo cáo test dạng HTML (và Allure Report), cho GitHub Actions tự động chạy toàn bộ test mỗi khi có code mới.
📎 Nội dung do maiqai.com tự biên soạn, chuyển thể từ Sách 4 "Automation API với Python + Playwright" — mọi code, lệnh chạy và kết quả đều đã tự tay chạy thật để xác nhận trước khi đưa vào bài, không bịa output.