Modul 9: Hesabat və dəst quruluşu
Özün üçün saxladığın dəst sadəcə keçməlidir. Komandaya təhvil verdiyin dəst həm də
oxunaqlı olmalıdır: nəyin işlədiyinin bölüşülə bilən hesabatı, yalnız smoke alt-dəstini
işlətmək yolu və onlarla faylı keçib miqyaslanan qovluq quruluşu. Bu modul pytest-html ilə
hesabatı, testləri marker-lərlə seçməyi və dəsti strukturlaşdırmağı əhatə edir.
TestMarket Lab-ı http://localhost:3000-də işlək və .venv-ini aktiv saxla.
🎬 Video tezliklə əlavə olunacaq
Modul 9: hesabat və dəst quruluşuna qısa baxış — slayd təlimatı Slaydlar — yeni pəncərədə açılırpytest-html ilə HTML hesabatları
Bölmə: “pytest-html ilə HTML hesabatları”pytest-in terminal çıxışı sənin üçün yaxşıdır; hesabat faylı isə komanda ilə bölüşdüyün və ya
CI icrasına əlavə etdiyin şeydir. pytest-html tək, öz-özünə tam bir HTML fayl istehsal edir:
-
Onu quraşdır:
Terminal window pip install pytest-html -
Asılılıqlarını yenidən bərkit (ki, CI və komanda yoldaşların da
pytest-html-i alsın):Terminal window pip freeze > requirements.txt -
Hesabatla işlət:
Terminal window pytest --html=report.html --self-contained-html
report.html hər testi nəticəsi, müddəti və tutulmuş çıxışı ilə siyahılayır — bir baxışda
keç/uğursuz, uğursuz testlərin traceback-ləri inline. --self-contained-html CSS/JS-i inline edir
ki, o bir fayl email edilə və ya CI artefaktı kimi yüklənə bilsin.
Yadda saxla: pip install pytest-html, pip freeze > requirements.txt ilə yenidən bərkit (ki,
CI də plagini alsın), sonra tək bölüşülə bilən hesabat faylı üçün pytest --html=report.html --self-contained-html — CI icrasına əlavə etdiyin və ya komanda yoldaşına göndərdiyin artefakt.
Marker-lərlə seç və qruplaşdır
Bölmə: “Marker-lərlə seç və qruplaşdır”Marker-lər (Modul 2) testləri etiketləyir ki, bir alt-dəst işlədə biləsən. Marker adlarını
pytest.ini-də qeydiyyatdan keçir (şərhlər öz sətirlərində — pytest.ini inline # şərhləri
dəstəkləmir), sonra etiketlə və seç:
[pytest]testpaths = testsmarkers = smoke: a fast, critical subset to run first api: tests that hit the REST API ui: tests that drive the browserimport pytest
@pytest.mark.smoke@pytest.mark.apidef test_products_endpoint_up(): ...pytest -m smoke # only smoke testspytest -m "api and not smoke" # api tests that aren't smokepytest -m ui # only browser testsSaniyələr içində işləyən smoke alt-dəsti standart “kritik nəyisə sındırdıqmı?” darvazasıdır — onu
hər push-da işlət, tam dəsti daha az.
Yadda saxla: marker-ləri pytest.ini-də qeydiyyatdan keçir, testləri @pytest.mark.<name> ilə
etiketlə və -m ilə seç (and/or/not dəstəkləyir). Sürətli smoke alt-dəsti sənin gündəlik
sağlamlıq darvazandır.
Dəsti strukturlaşdırmaq
Bölmə: “Dəsti strukturlaşdırmaq”Bir neçə faylı keçdikdə, testləri sahəyə görə qruplaşdır və hər sahənin öz conftest.py-i vasitəsilə
fixture-ləri bölüşməsinə imkan ver:
python-sdet/├── tests/│ ├── conftest.py # shared fixtures (base_url, api, reset_db)│ ├── api/│ │ ├── conftest.py # API-only fixtures│ │ └── test_products.py│ └── ui/│ ├── conftest.py # UI-only fixtures│ └── test_login.py└── pytest.inipytest bir testə gedən yoldakı hər conftest.py-i yükləyir, ona görə tests/conftest.py-dəki
fixture hər yerdə əlçatandır, tests/ui/conftest.py-dəki isə UI testlərinə scope-lanır. Bu,
bölüşülən fixture-ləri mərkəzi, sahəyə-xas fixture-ləri lokal saxlayır.
Yadda saxla: testləri sahə başına qovluqlara təşkil et; bölüşülən fixture-ləri yuxarı
conftest.py-ə, sahəyə-xas fixture-ləri isə iç-içə birinə qoy. pytest bir testə gedən yoldakı hər
conftest.py-i avtomatik aşkarlayır — import yoxdur.
Hesabat-dostu bayraqlar
Bölmə: “Hesabat-dostu bayraqlar”Bir neçə bayraq icraları (və CI loglarını) qat-qat oxunaqlı edir:
pytest -ra # summary of all non-passing outcomes (skips, xfails, errors)pytest --tb=short # compact tracebackspytest --durations=10 # the 10 slowest tests — find what to speed uppytest -q # quiet: one char per test-ra xüsusilə CI-də dəyərlidir: o, sonda hər skip və xfail-i üzə çıxarır, ona görə səssizcə
buraxılmış test gizlənə bilmir. --durations səni optimallaşdırmağa dəyər yavaş testlərə yönəldir.
Yadda saxla: -ra (skip/xfail/xətaları üzə çıxar), --tb=short (yığcam uğursuzluqlar) və
--durations=N (ən yavaş testlər) çıxış divarını oxunaqlı xülasəyə çevirir — onları CI-də qur.
Daha zəngin hesabatlar: Allure
Bölmə: “Daha zəngin hesabatlar: Allure”Cilalanmış, tarixi dashboard üçün (icralar arası trendlər, addımlar, əlavələr) Allure ümumi
yüksəltmədir: pip install allure-pytest, pytest --alluredir=allure-results işlət, sonra ayrı
Allure komanda-sətri aləti ilə render et. O, pytest-html-dən daha ağırdır (Java-əsaslı CLI), ona
görə komanda tək fayl əvəzinə dashboard və tarix istəyəndə ona müraciət et.
Yadda saxla: pytest-html sıfır-sürtünmə tək-fayl hesabatıdır; Allure ayrı CLI bahasına
dashboard, trend və addım təfərrüatı əlavə edir. pytest-html ilə başla; komandaya tarix lazım
olanda Allure-u qəbul et.
Birləşdirmək
Bölmə: “Birləşdirmək”CI-tipli əmr: yalnız smoke alt-dəstini işlət, bölüşülə bilən hesabat istehsal et və keçməyən hər şeyi xülasələ:
pytest -m smoke --html=smoke-report.html --self-contained-html -ra --tb=shortO bir sətir real bir “darvaza” addımıdır — sürətli alt-dəst, əlavə etmək üçün artefakt və keçməyən istənilən şeyin təmiz xülasəsi. Modul 10 məhz bunu GitHub Actions-a qoşur.
Yadda saxla: yaxşı darvaza əmri bir marker-i (-m smoke), bir hesabatı (--html … --self-contained-html) və bir xülasəni (-ra) birləşdirir. Oxunaqlı giriş və oxunaqlı çıxış dəsti
komanda aktivinə çevirən şeydir.
Tapşırıqlar
Bölmə: “Tapşırıqlar”TestMarket Lab işlək olarkən python-sdet layihəndə işlə. pytest -v ilə işlət.
Tapşırıq 1 — Hesabat yarat (5 dəq)
Bölmə: “Tapşırıq 1 — Hesabat yarat (5 dəq)”pip install pytest-html, sonra pytest --html=report.html --self-contained-html işlət.
report.html-i brauzerdə aç və bir testin müddətini və nəticəsini tap.
Tapşırıq 2 — smoke alt-dəsti (10 dəq)
Bölmə: “Tapşırıq 2 — smoke alt-dəsti (10 dəq)”pytest.ini-də smoke-u qeydiyyatdan keçir, iki sürətli testi @pytest.mark.smoke etiketlə və
pytest -m smoke-un yalnız o ikisini işlətdiyini təsdiqlə. Sonra pytest -m "not smoke" işlət və
onun qalanını işlətdiyini təsdiqlə.
Tapşırıq 3 — Yenidən təşkil et (15 dəq)
Bölmə: “Tapşırıq 3 — Yenidən təşkil et (15 dəq)”API testlərini tests/api/-yə, UI testlərini tests/ui/-yə köçür, hər biri bir conftest.py ilə.
Dəstin hələ də keçdiyini və tests/conftest.py-dəki fixture-in hər iki sahədən işlədilə bildiyini
təsdiqlə.
Tapşırıq 4 — Hesabat-dostu icra (5 dəq)
Bölmə: “Tapşırıq 4 — Hesabat-dostu icra (5 dəq)”pytest -ra --durations=5 işlət. Ən yavaş testini müəyyən et və istənilən skip/xfail-in icra-sonu
xülasəsini oxu.
Bonus — Darvaza əmri
Bölmə: “Bonus — Darvaza əmri”Yalnız smoke işlədən, öz-özünə tam HTML hesabat yazan və keçməyən xülasə çap edən tək bir əmr yığ.
Bu, kiçik miqyasda sənin Modul 10 CI addımındır.
Modul 10-da dəsti CI-yə qoyuruq — alətləri quraşdıran, TestMarket Lab-ı başladan, testləri hər push və pull request-də işlədən və hesabatı yükləyən GitHub Actions workflow-u.