A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Következő változat | Előző változat | ||
|
tanszek:oktatas:informacios_rendszerek_integralasa:tdd_pelda [2024/02/25 21:44] knehez létrehozva |
tanszek:oktatas:informacios_rendszerek_integralasa:tdd_pelda [2024/02/25 22:32] (aktuális) knehez [Teszt írása] |
||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| - | === Teszt vezérelt fejlesztés === | + | ===== Teszt vezérelt fejlesztés ===== |
| - | Klónozzuk a teszt projektet: | + | Hozzunk létre egy könyvtárat és lépjünk bele: |
| - | + | mkdir tdd | |
| - | git clone https://github.com/knehez/tdd.git | + | cd tdd |
| Hozzunk létre egy virtuális környezetet: | Hozzunk létre egy virtuális környezetet: | ||
| - | python -m virtualenv venv | + | python -m virtualenv .venv |
| - | Ha nincs telepítve a //virtualenv// csomag akkor futtasuk: | + | Ha nincs telepítve a //virtualenv// csomag akkor futtassuk: |
| pip install virtualenv | pip install virtualenv | ||
| + | Lépjünk be a virtualis környezetbe: | ||
| + | .\.venv\Scripts\activate | ||
| + | A prompt előtt innentől kezdve (.venv) szöveg íródik ki. | ||
| + | Telepítsük a //pytest// csomagot: | ||
| + | pip install pytest | ||
| + | A teszt indítása: | ||
| + | python -m pytest tests | ||
| + | Minden könyvtárban keresi a test_*.py és a *_test.py fájlokat, ezeket tekinti teszteknek. | ||
| + | ===== Teszt írása ====== | ||
| + | |||
| + | hozzunk létre egy //test_basic.py// fájlt a teszt könyvtárban a következő tartalommal: | ||
| + | |||
| + | <sxh python> | ||
| + | def test_always_passes(): | ||
| + | assert True | ||
| + | |||
| + | def test_always_fails(): | ||
| + | assert False | ||
| + | </sxh> | ||
| + | |||
| + | Majd futtassuk a tesztet: | ||
| + | python -m pytest tests | ||
| + | |||
| + | Hozzunk létre egy másik teszt fájlt, test_fixture.py: | ||
| + | |||
| + | <sxh python> | ||
| + | import pytest | ||
| + | |||
| + | @pytest.fixture | ||
| + | def example_fixture(): | ||
| + | return 1 | ||
| + | |||
| + | def test_with_fixture(example_fixture): | ||
| + | assert example_fixture == 1 | ||
| + | </sxh> | ||
| + | |||
| + | A teszt futtatása után az alábbi eredményt kapjuk: | ||
| + | |||
| + | {{:tanszek:oktatas:informacios_rendszerek_integralasa:pasted:20240225-220731.png}} | ||
| + | |||
| + | Javítsuk ki a tesztet és gihub repositoryba töltsük fel. | ||
| + | |||
| + | Hozzunk létre egy app alkönyvtárat a gyökérben és üres //__init__.py// fájlt és egy //data_formatter.py// fájlt, a //tests/test_data_formatter.py//. | ||
| + | |||
| + | {{:tanszek:oktatas:informacios_rendszerek_integralasa:pasted:20240225-222912.png}} | ||
| + | |||
| + | A test_data_formatter.py tartalma legyen: | ||
| + | |||
| + | <sxh python> | ||
| + | from app.data_formatter import format_data_for_display | ||
| + | def test_format_data_for_display(): | ||
| + | people = [ | ||
| + | { | ||
| + | "given_name": "Karoly", | ||
| + | "family_name": "Nehez", | ||
| + | "title": "Senior Software Engineer", | ||
| + | }, | ||
| + | { | ||
| + | "given_name": "John", | ||
| + | "family_name": "Smith", | ||
| + | "title": "Project Manager", | ||
| + | }, | ||
| + | ] | ||
| + | |||
| + | assert format_data_for_display(people) == [ | ||
| + | "Karoly Nehez: Senior Software Engineer", | ||
| + | "John Smith: Project Manager", | ||
| + | ] | ||
| + | </sxh> | ||
| + | |||
| + | A data_formatter.py-ben megírjuk az implementációt: | ||
| + | <sxh python> | ||
| + | def format_data_for_display(people): | ||
| + | return [f"{person['given_name']} {person['family_name']}: {person['title']}" for person in people] | ||
| + | </sxh> | ||
| + | Futtassuk a tesztet: | ||
| + | python -m pytest tests | ||