Chạy tự động bằng GitHub Actions (CI)
CI (Continuous Integration) nghĩa là: mỗi khi có code mới đẩy lên GitHub, 1 máy chủ tự động tải code về và chạy toàn bộ test — không cần tự mở máy, tự gõ pytest. Nếu có test FAILED, biết ngay mà không phải đợi ai đó phát hiện.
Tạo file .github/workflows/tests.yml:
name: Chay test tu dongon:push:branches: [main]pull_request:branches: [main]workflow_dispatch:jobs:test:runs-on: ubuntu-lateststeps:- name: Lay code veuses: actions/checkout@v4- name: Cai Pythonuses: actions/setup-python@v5with:python-version: "3.13"- name: Cai thu vien Pythonrun: pip install -r requirements.txt- name: Cai trinh duyet cho Playwrightrun: playwright install --with-deps chromium- name: Chay toan bo test, xuat bao cao HTMLrun: pytest --html=report.html --self-contained-html- name: Luu bao cao HTML lam artifactif: always()uses: actions/upload-artifact@v4with:name: bao-cao-testpath: report.html
Giải thích các phần chính (file này viết bằng YAML — định dạng cấu hình dùng thụt lề để phân cấp, khác Python nhưng nguyên tắc thụt lề tương tự):
| Phần | Ý nghĩa |
|---|---|
| on: push: branches: [main] | Tự chạy mỗi khi có code mới đẩy lên nhánh main |
| runs-on: ubuntu-latest | Máy chủ chạy trên Linux (GitHub cấp miễn phí) |
| steps: | Danh sách các bước chạy tuần tự, giống các lệnh terminal đã gõ tay ở Chương 3 |
| uses: actions/checkout@v4 | Bước có sẵn của GitHub: tải code về máy chủ |
| run: pip install -r requirements.txt | Chạy đúng lệnh terminal đã quen thuộc từ Chương 3 |
| if: always() | Vẫn lưu báo cáo dù test FAILED (mặc định GitHub bỏ qua bước sau khi có lỗi) |
| uses: actions/upload-artifact@v4 | Lưu file report.html để tải về xem sau, từ tab Actions trên GitHub |
Đẩy code lên GitHub (git push), vào tab Actions của repo — thấy quy trình tự chạy, và tải được report.html từ đó.
Đến đây, bạn đã hoàn thành Checkpoint 8 — checkpoint cuối, khớp với commit 8f808ae trên GitHub (phần Allure Report ở mục 16.2 là 1 commit bổ sung riêng, 15f986a, không bắt buộc để có CI chạy được).
📌 Tổng kết cả cuốn sách
| Checkpoint | Chương | Commit |
|---|---|---|
| 1 | 1-3 | 6f21220 |
| 2 | 4-6 | 67665ae |
| 3 | 7-9 | fdf2bde |
| 4 | 10-11 | 3991013 |
| 5 | 12 | 08a3fa3 |
| 6 | 13 | 07f8aba |
| 7 | 14-15 | e76c97b |
| 8 | 16 | 8f808ae |
| (bổ sung) | 16.2 — Allure Report | 15f986a |
Toàn bộ dự án: github.com/mmai99/book4-api-automation — 23 test, dùng Python + Playwright test cả UI lẫn API trên 2 dịch vụ luyện tập thật, có CI tự động.
Bước tiếp theo, nếu muốn đi xa hơn: thử áp dụng đúng quy trình này (đọc tài liệu → gọi thử xác nhận hành vi thật → lập test case → viết test → chuẩn hoá framework) cho 1 API thật khác — của công ty bạn đang làm, hoặc 1 API luyện tập công khai khác. Quy trình quan trọng hơn bất kỳ đoạn code cụ thể nào trong sách.