Məzmuna keç

Modul 0: Quraşdırma və ilk test

Python for SDETs-ə xoş gəldin. Bu ilk modul maşınını hazırlayır və real bir tətbiqə qarşı keçən əsl bir testlə bitir. Sonunda Python, virtual mühit, pytestrequests quraşdırılmış, TestMarket Lab lokalda işlək və bütün alət zəncirinin başdan-sona işlədiyini sübut edən yaşıl bir testin olacaq.

🎬 Video tezliklə əlavə olunacaq

Modul 0: quraşdırmaya qısa baxış — slayd təlimatı Slaydlar — yeni pəncərədə açılır

Dörd şey, sıra ilə:

  1. Python 3 — dil (yəqin ki Fundamentals-dan onsuz da var; yoxlayacağıq).
  2. Virtual mühit (venv) — layihə üçün təcrid olunmuş paket dəsti.
  3. pytest — Python testi üçün de-fakto standart olan test icraçısı.
  4. requests — tətbiqin REST API-sini çağırmaq üçün işlədəcəyimiz kitabxana.

Python üçün Playwright sonra, Modul 6-da gəlir — onu hələ quraşdırmağa ehtiyac yoxdur.

Yadda saxla: bu kursun alət zənciri Python + venv + pytest + requests-dir.


Sənə Python 3.9 və ya daha yeni lazımdır.

  1. Onsuz da nəyin olduğunu yoxla. Terminal aç və işlət:

    Terminal window
    python --version

    Python 3.9.x və ya daha yüksək görürsənsə, hazırsan — növbəti bölməyə keç. Bəzi sistemlərdə əmr python3-dür:

    Terminal window
    python3 --version
  2. Yoxdursa quraşdır. Quraşdırıcını python.org/downloads-dan endir və işə sal.

  3. pip-i yoxla (Python-un paket quraşdırıcısı — Python ilə birlikdə gəlir):

    Terminal window
    pip --version

    pip tapılmırsa, əvəzinə python -m pip --version sına.

Yadda saxla: davam etməzdən əvvəl python --version (≥ 3.9) və pip --version-i təsdiqlə — korlanmış Python quraşdırma ağrısının #1 səbəbidir.


Layihə və virtual mühit yarat

Bölmə: “Layihə və virtual mühit yarat”

Virtual mühit bir layihəyə aid olan Python-un paket sahəsinin şəxsi nüsxəsidir. Ora quraşdırmaq bu kursun paketlərini maşınındakı hər şeydən ayrı saxlayır — versiya toqquşması yoxdur və bir qovluğu silərək bütün şeyi silə bilərsən.

  1. Layihə qovluğunu yarat:

    Terminal window
    mkdir python-sdet
    cd python-sdet
  2. Virtual mühiti qur (ikinci venv qovluq adıdır — .venv geniş yayılmış konvensiyadır):

    Terminal window
    python -m venv .venv
  3. Onu aktivləşdir. Bu, insanların unutduğu addımdır — quraşdırmaq və ya işlətməkdən əvvəl hər yeni terminalda venv-i aktivləşdirməlisən:

    Terminal window
    # Windows (PowerShell)
    .venv\Scripts\Activate.ps1
    # Windows (cmd)
    .venv\Scripts\activate.bat
    # macOS / Linux (bash, zsh)
    source .venv/bin/activate

    Aktiv olduqda, prompt-un əvvəlində (.venv) göstərilir.

Mühitdən sonra çıxmaq üçün deactivate işlət.

Yadda saxla: venv bir layihənin paketlərini təcrid edir. Bir dəfə qur (python -m venv .venv), hər yeni terminalda aktivləşdir(.venv) prefiksi onun açıq olduğunu deyir.


pytest və requests-i quraşdır

Bölmə: “pytest və requests-i quraşdır”

venv aktiv olarkən iki kitabxananı quraşdır:

Terminal window
pip install pytest requests

Quraşdırdığını qeyd et ki, hər kəs (o cümlədən gələcək sən, ya da CI) onu təkrar yarada bilsin:

Terminal window
pip freeze > requirements.txt

requirements.txt indi dəqiq versiyaları siyahılayır. Sonra təzə maşın mühiti pip install -r requirements.txt ilə yenidən qurur.

pytest-in path-da olduğunun tez yoxlanışı:

Terminal window
pytest --version

Yadda saxla: aktiv venv-ə quraşdır, sonra versiyaları bərkitmək üçün pip freeze > requirements.txt — həmin fayl CI-nin və komanda yoldaşlarının eyni quraşdırmanı almasının yoludur.


Təmiz bir test layihəsi kiçik başlayır. Bir tests/ qovluğu yarat — pytest testləri orada aşkarlayır:

python-sdet/
├── .venv/ # the virtual environment (don't commit this)
├── tests/
│ └── test_smoke.py # your tests live here
├── requirements.txt # pinned dependencies
└── pytest.ini # pytest configuration (optional, added below)

Layihə kökünü işarələmək və pytest-i tests/ qovluğuna yönəltmək üçün kiçik bir pytest.ini əlavə et ki, çılpaq pytest (layihə kökündən işlədilib) yolu adlandırmadan onları aşkarlasın:

pytest.ini
[pytest]
# Where pytest looks for tests
testpaths = tests

Yadda saxla: testləri tests/-də saxla, asılılıqları requirements.txt-də bərkit və .venv/-i versiya nəzarətindən kənarda saxla.


Məşq tətbiqini al: TestMarket Lab

Bölmə: “Məşq tətbiqini al: TestMarket Lab”

Bu kursdakı hər test TestMarket Lab-a qarşı işləyir — REST API və veb UI-si olan kiçik, real mağaza. Bu, sənin python-sdet qovluğundan ayrı bir layihədir: tətbiq bir terminalda işləyir, testlərin başqasında.

Onu işlətmək üçün Node.js quraşdırılmış olmalıdır (LTS versiya). Sonra, python-sdet-dən kənar bir qovluqda:

Terminal window
git clone https://github.com/TesterBaku/testmarket-lab
cd testmarket-lab
npm install
npm start

Onu işlək saxla və http://localhost:3000-i aç — TestMarket mağazasını görməlisən. API-nin də cavab verdiyini təsdiqlə, brauzerdə və ya başqa terminalda:

Terminal window
# In a new terminal
curl http://localhost:3000/api/products

Geriyə məhsulların JSON massivini almalısan.

Yadda saxla: tətbiq öz terminalında http://localhost:3000-də işləyir; işləyərkən onu işlək saxla. /api/reset verilənləri məlum başlanğıc vəziyyətinə qaytarır.


Bütün stack-in işlədiyini sübut etmə vaxtıdır. python-sdet layihəndə, venv aktiv və TestMarket Lab işlək olarkən, bunu tests/test_smoke.py-a qoy:

tests/test_smoke.py
import requests
BASE_URL = "http://localhost:3000"
def test_products_endpoint_is_up():
response = requests.get(f"{BASE_URL}/api/products")
# The request succeeded
assert response.status_code == 200
# The body is a JSON array with products in it
products = response.json()
assert isinstance(products, list)
assert len(products) > 0

Onu python-sdet qovluğundan işlət:

Terminal window
pytest

Buna bənzər bir şey görməlisən:

========================= test session starts =========================
collected 1 item
tests/test_smoke.py . [100%]
========================== 1 passed in 0.05s ==========================

Fayl adından sonrakı o tək nöqtə sənin keçən testindir. 🎉

Əvəzinə Connection refused görürsənsə, tətbiq işləmir — TestMarket Lab-ı öz terminalında işə sal və yenidən sına. pytest “no tests ran” bildirirsə, faylın test_smoke.py adlandığını (test_ prefiksi vacibdir) və funksiyanın test_ ilə başladığını yoxla. Bu adların niyə vacib olduğunu Modul 1-də dəqiq açacağıq.

Yadda saxla: keçən bir API smoke testi (200 + boş olmayan list) bütün alət zəncirinin — Python, venv, pytest, requests və işləyən tətbiqin — düzgün qoşulduğunu sübut edir.


  • Bu kurs brauzer icraçısını yox, əsl lokal quraşdırmanı işlədir — işin işlədiyi yol.
  • Alət zənciri Python + venv + pytest + requests-dir (Playwright Modul 6-da gəlir).
  • venv paketləri təcrid edir: bir dəfə qur, hər yeni terminalda aktivləşdir, ora quraşdır və versiyaları bərkitmək üçün pip freeze > requirements.txt.
  • TestMarket Lab öz terminalında http://localhost:3000-də işləyir və hər testin hədəflədiyi şeydir.
  • pytest test_*.py adlı faylları və test_* adlı funksiyaları aşkarlayır; keçən bir API smoke testi stack-i başdan-sona təsdiqləyir.

Yoxlama siyahısı — indi bunlar olmalıdır: Python ≥ 3.9 yoxlanıb; aktiv .venv olan bir python-sdet layihəsi; pytestrequests quraşdırılıb və requirements.txt-də bərkidilib; TestMarket Lab klonlanıb və http://localhost:3000-də işlək; və tests/test_smoke.py keçir.

Modul 1-də pytest-in özünə dərindən gedirik — testlərin necə aşkarlandığı, assert-in sənə necə oxunaqlı uğursuzluqlar verdiyi və istədiyin testləri dəqiq necə işlətmək.