Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Організація та запуск тестів з Pytest | Тестування з Unittest і Pytest
Структурне програмування на Python

Організація та запуск тестів з Pytest

Свайпніть щоб показати меню

Коли потрібно писати чистий, виразний і легко підтримуваний тестовий код на Python, популярним вибором є pytest. На відміну від вбудованого фреймворку unittest, який дотримується жорсткої, класової структури та вимагає використання спеціальних методів перевірки, таких як self.assertEqual, pytest дозволяє використовувати стандартні оператори assert Python у простих функціях. Це значно зменшує кількість шаблонного коду та робить тести більш лаконічними, оскільки більше не потрібно обгортати логіку у складні ієрархії класів чи запам’ятовувати десятки специфічних для фреймворку назв перевірок лише для перевірки простого результату.

Однією з найпотужніших можливостей pytest є система автоматичного пошуку тестів. Достатньо просто запустити pytest у директорії вашого проєкту, і він автоматично знайде всі файли, що відповідають шаблону test_*.py або *_test.py, та виконає всі функції в цих файлах, які починаються з test_. Це означає, що вам не потрібно вручну вказувати, які тести запускати — pytest зробить це за вас.

Ще однією важливою перевагою є використання фікстур. Фікстури відповідають за підготовку та очищення ресурсів, необхідних для тестів, таких як тимчасові файли чи підключення до бази даних, у зручний для повторного використання спосіб. Достатньо задекорувати функцію як @pytest.fixture і потім вказати її як вхідний параметр у тестових функціях. Це робить код модульним і позбавляє від дублювання логіки підготовки.

Щоб почати роботу з pytest, спочатку потрібно встановити його. Використайте наступну команду у вашому терміналі:

pip install pytest

Це завантажить і встановить останню версію pytest, щоб ви могли одразу почати писати та запускати свої тести.

Нижче наведено практичний приклад використання для написання функціональних тестів і визначення багаторазових фікстур.

import pytest

# A simple function to test
def add(a, b):
    return a + b

# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
    return (3, 5)

# Test function using the fixture
def test_add_with_fixture(sample_numbers):
    a, b = sample_numbers
    result = add(a, b)
    assert result == 8

# Another simple test function
def test_add_negative_numbers():
    assert add(-2, -4) == -6
question mark

Яка ключова перевага використання pytest порівняно з unittest?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 5. Розділ 6
some-alt