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

Fixture cho Restful-Booker Platform

Vì sao cần fixture mới, không dùng lại api_context? Từ Chương 7 tới giờ, mọi test đều gọi API của restful-booker.herokuapp.com qua fixture api_context. Nhưng trang UI dùng ở Chương 4-6 (automationintesting.online) là một ứng dụng hoàn toàn khác, có API riêng của nó. api_context cũ đã gắn cứng địa chỉ restful-booker.herokuapp.com nên không gọi được sang trang kia — cần tạo 1 fixture mới, trỏ đúng địa chỉ mới.

Tệp tests/conftest.py (thêm hằng số và fixture):

FILE tests/conftest.py
RESTFUL_BOOKER_PLATFORM_URL = "https://automationintesting.online"
@pytest.fixture(scope="session")
def rbp_api_context(playwright):
"""APIRequestContext rieng cho Restful-Booker Platform (automationintesting.online) -
day la 1 app KHAC voi Restful-Booker, dung cho phan ket hop UI + API."""
context = playwright.request.new_context(base_url=RESTFUL_BOOKER_PLATFORM_URL)
yield context
context.dispose()

Giải thích từng dòng lệnh:

DòngGiải thích
RESTFUL_BOOKER_PLATFORM_URL = "..."Khai báo địa chỉ gốc của trang UI thành 1 hằng số, để không phải gõ lại chuỗi này nhiều lần
@pytest.fixture(scope="session")Đánh dấu đây là fixture, chỉ tạo 1 lần dùng chung cho cả phiên chạy test (khái niệm scope đã học ở Chương 9)
def rbp_api_context(playwright):Tên hàm = tên fixture. Nhận playwright — fixture gốc có sẵn, điểm khởi đầu để tạo mọi context (đã học ở Chương 7)
playwright.request.new_context(base_url=...)Tạo 1 context gọi API mới, gắn sẵn địa chỉ gốc là trang UI — y hệt cách tạo api_context ở Chương 7, chỉ khác địa chỉ
yield contextTrả context cho test nào cần dùng (khai báo tham số rbp_api_context)
context.dispose()Dọn dẹp context sau khi hết phiên test

Nói ngắn gọn: đây chỉ là bản sao của kỹ thuật tạo fixture api_context ở Chương 7, áp dụng cho 1 trang web khác — đặt tên rbp_api_context (rbp = Restful-Booker Platform) để phân biệt rõ với api_context cũ, tránh nhầm lẫn gọi nhầm API.