🔁 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 contextcontext.dispose()
| Phần | Chạy khi nào |
|---|---|
| Trước yield | Setup — chạy 1 lần trước khi test dùng fixture này bắt đầu |
| yield context | Trả context cho test dùng |
| Sau yield | Teardown — 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.fixturedef 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"]