← До списку лабораторних по Python
Повний опис / сценарій лабораторної:
Meta: навчитися писати тести які покривають основні гілки логіки.
Krok 1. Встановити pytest у віртуальному середовищі.
Komandi: cd ~/python_lab1; source .venv/bin/activate; pip install pytest
Krok 2. Створити модуль з логікою для тестування.
Komanda: cd src; printf "def divide(a: float, b: float) -> float:
if b == 0:
raise ValueError("division by zero")
return a / b
" > app/math9.py
Krok 3. Створити каталог tests і файл test_math9.py.
Komandi: mkdir -p tests; touch tests/test_math9.py
Krok 4. Написати позитивний тест.
Komanda: printf "from app.math9 import divide
def test_divide_ok():
assert divide(6, 3) == 2
" > tests/test_math9.py
Krok 5. Додати тест на помилку.
Komanda: printf "from app.math9 import divide
import pytest
def test_divide_ok():
assert divide(6, 3) == 2
def test_divide_zero():
with pytest.raises(ValueError):
divide(1, 0)
" > tests/test_math9.py
Krok 6. Запустити pytest у каталозі src.
Komanda: pytest -q
Krok 7. Змінити реалізацію divide щоб зламати один тест.
Poyasnennya: наприклад повернути завжди одиницю.
Krok 8. Повторно запустити pytest і побачити падіння.
Komanda: pytest -q
Krok 9. Повернути правильну реалізацію і зафіксувати урок що тести захищають від регресій.
Krok 10. Mini zvit.
Zavdannya: опиши як організувати структуру tests для великого застосунку.