===== Teszt vezérelt fejlesztés ===== Hozzunk létre egy könyvtárat és lépjünk bele: mkdir tdd cd tdd Hozzunk létre egy virtuális környezetet: python -m virtualenv .venv Ha nincs telepítve a //virtualenv// csomag akkor futtassuk: 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: def test_always_passes(): assert True def test_always_fails(): assert False Majd futtassuk a tesztet: python -m pytest tests Hozzunk létre egy másik teszt fájlt, test_fixture.py: import pytest @pytest.fixture def example_fixture(): return 1 def test_with_fixture(example_fixture): assert example_fixture == 1 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: 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", ] A data_formatter.py-ben megírjuk az implementációt: def format_data_for_display(people): return [f"{person['given_name']} {person['family_name']}: {person['title']}" for person in people] Futtassuk a tesztet: python -m pytest tests