POM, Pytest, loyiha strukturasi β testlaringizni tartibga solish. Senior'lar foydalanayotgan yondashuv, sodda tushuntirilgan.
75 daqiqa
Python kod
6 ta interaktiv
Kirish
Muammo: tartibsiz testlar
19 va 20-darslarda Selenium va Playwright o'rgandik. Bitta skript yozish oson. Lekin 50 ta test bo'lganda nima bo'ladi?
Tasavvur qiling: Login tugmasi IDsi o'zgardi. Sizda 50 ta test fayl bor, hammasida find_element(By.ID, "old-login") yozilgan. 50 ta joyda o'zgartirish kerak! Bu β tartibsiz testlarning muammosi.
π‘ Uy analogi
Tartibli uy vs tartibsiz uy
Tartibsiz uyda kiyimlar hamma joyda. Bir kiyim izlash β 10 daqiqa. Tartibli uyda β har narsa o'z joyida, 10 sekund. Automation ham xuddi shunday: kod tartibli bo'lsa β o'zgartirish oson, topish oson.
Yechim: Strategiya
Bu darsda 3 ta asosiy tushuncha o'rganamiz:
1
Page Object Model (POM)
Har sahifa uchun alohida "papka". Login tugmasi o'zgarsΠ° β faqat 1 joyda o'zgartirasiz.
2
Pytest Framework
Testlarni tartibli yozish va ishga tushirish uchun asbob. Terminal'dan barcha testlar bir buyruqda.
3
Loyiha Strukturasi
Fayllarni qayerda saqlash β pages/, tests/, conftest.py. Har narsa o'z joyida.
1-qism
Page Object Model (POM)
POM β eng mashhur automation pattern. Google'dan tortib barcha katta kompaniyalar foydalanadi.
POM nima?
Page Object Model β har bir sahifa uchun alohida Python class. Sayt elementlari (locatorlar) va ular bilan ishlash metodlari shu classdΠ° yig'iladi.
Oddiy qilib: LoginPage degan class β login sahifasining hamma narsasini biladi. Test fayllar bu classni ishlatadi, lekin locatorlarni bilmaydi.
terminal# Barcha testlarni ishlatish
pytest
# Bitta faylni
pytest test_login.py
# Natijani batafsil ko'rish
pytest -v
# Playwright bilan (brauzer ko'rinadigan)
pytest --headed
Fixture β brauzer setup
Fixture β har test oldidan bajariladigan tayyorgarlik. Masalan: brauzer ochish, login qilish.
conftest.pyimport pytest
from playwright.sync_api import sync_playwright
# Bu fixture har testdan oldin brauzer ochadi
@pytest.fixture
defpage():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
yield page # Test shu yerda ishlaydi
browser.close() # Test tugagach yopiladi
Sodda qoida
test_ bilan boshla (fayl va funksiya). assert bilan tekshir. pytest bilan ishga tushir. Shu 3 ta narsa yetarli!
3-qism
Loyiha Strukturasi
Fayllarni qayerga saqlash? Professional automation loyihasi qanday ko'rinadi?
testshop-automation/# Loyiha papkasi
β
βββ pages/# Page Object'lar
β βββ login_page.py# LoginPage class
β βββ product_page.py# ProductPage class
β βββ cart_page.py# CartPage class
β
βββ tests/# Test fayllar
β βββ test_login.py# Login testlari
β βββ test_products.py# Mahsulot testlari
β βββ test_cart.py# Savat testlari
β
βββ conftest.py# Fixture'lar (brauzer setup)
βββ pytest.ini# Pytest sozlamalari
βββ requirements.txt# pip install -r requirements.txt
Har fayl nima qiladi?
pages/login_page.py β LoginPage class: locatorlar va metodlar
tests/test_login.py β Login testlari: faqat assert va LoginPage chaqiradi