Mmaiqai.com
🔁 Automation Testing · Chương 9 · Mục 9.1

Setup/teardown với yield

Chương này không viết thêm code mới — dùng lại đúng 2 fixture đã có ở Chương 7 (api_context, mot_booking_id_co_that) để giải thích cơ chế, hoàn thiện Checkpoint 3.

Chương 7 đã giải thích vì sao cần fixture (tránh lặp code tạo context ở mỗi test) — chương này đi sâu vào cơ chế fixture hoạt động ra sao.

Nhìn lại api_context:

@pytest.fixture(scope="session")
def api_context(playwright):
"""Tao 1 APIRequestContext dung chung cho ca phien test, gan san base_url."""
context = playwright.request.new_context(base_url=RESTFUL_BOOKER_URL)
yield context
context.dispose()
PhầnChạy khi nào
Trước yieldSetup — chạy 1 lần trước khi test dùng fixture này bắt đầu
yield contextTrả context cho test dùng
Sau yieldTeardown — chạy sau khi test (hoặc mọi test dùng chung fixture này) đã xong

mot_booking_id_co_that không có yield, chỉ return — vì không có gì cần dọn dẹp sau khi dùng xong (chỉ là 1 con số, không phải tài nguyên như context):

@pytest.fixture
def mot_booking_id_co_that(api_context):
"""Lay 1 bookingid dang ton tai that trong he thong."""
response = api_context.get("/booking")
danh_sach = response.json()
return danh_sach[0]["bookingid"]