Mmaiqai.com
📊 Automation Testing · Chương 16 · Mục 16.3

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:

FILE .github/workflows/tests.yml
name: Chay test tu dong
 
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
 
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Lay code ve
uses: actions/checkout@v4
 
- name: Cai Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
 
- name: Cai thu vien Python
run: pip install -r requirements.txt
 
- name: Cai trinh duyet cho Playwright
run: playwright install --with-deps chromium
 
- name: Chay toan bo test, xuat bao cao HTML
run: pytest --html=report.html --self-contained-html
 
- name: Luu bao cao HTML lam artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: bao-cao-test
path: 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-latestMá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@v4Bước có sẵn của GitHub: tải code về máy chủ
run: pip install -r requirements.txtChạ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@v4Lư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

CheckpointChươngCommit
11-36f21220
24-667665ae
37-9fdf2bde
410-113991013
51208a3fa3
61307f8aba
714-15e76c97b
8168f808ae
(bổ sung)16.2 — Allure Report15f986a

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.