Юніт-тести - це потужний інструмент для розробників для забезпечення якості коду. Вони дозволяють ізольовано тестувати функції і переконатися, що вони працюють за призначенням. У цьому посібнику я покажу вам, як написати свій перший юніт-тест на Python. Ви не тільки вивчите основи модульного тестування, але й навчитеся ефективно налаштовувати свої тести.

Основні висновки

  • Юніт-тести допомагають виявити помилки на ранніх стадіях і переконатися, що ваші функції працюють за призначенням.
  • Бібліотека Python unittest надає простий спосіб реалізації тестів.
  • Ефективні тести включають як позитивні, так і негативні сценарії та перевіряють типи даних, що повертаються.

Покрокове керівництво

Крок 1: Підготовка проекту

По-перше, вам потрібен файл Python, в якому визначена ваша функція. У нашому прикладі ми викликаємо файл preisberechnung.py. Тут ви визначаєте функцію get_selling_price, яка бере ціну покупки і додає до неї націнку.

Основи юніт-тестування на Python: вступ

Крок 2: Створіть файл для ваших модульних тестів

Потім створіть новий файл, який буде містити тести для цієї функції. Назвемо цей файл preisberechnung_test.py. Тут ви будете працювати з модулем unittest.

Щоб використовувати фреймворк, імпортуйте його на початку файлу:

import unittest from preisberechnung import get_verkaufspreis
Основи юніт-тестування на Python: вступ

Крок 3: Створіть тестовий клас

Тестовий клас повинен бути успадкований від unittest.TestCase. Це дозволить вам організувати всі тести в структурованому вигляді. Перейменуйте клас на PriceCalculationTest, щоб пояснити, що саме тестується.

Основи юніт-тестування на Python: вступ

Крок 4: Напишіть тести

Тепер прийшов час писати власне тести. Почніть з тесту, який перевіряє, чи повернення функції get_sale_price має очікуваний тип (float):

class PriceCalculationTest(unittest.TestCase): def test_price_is_float(self): vk = get_sale_price(100) self.assertIsInstance(vk, float)
Основи юніт-тестування на Python: вступ

Крок 5: Тестування невірних вхідних даних

Також важливо протестувати невірні вхідні дані. Додайте тест, який перевіряє, чи згенерує функція виключення для невірних вхідних даних, таких як None або рядок:

def test_invalid_input(self): with self.assertRaises(TypeError): get_sale_price("invalid")
Основи юніт-тестування на Python: вступ

Крок 6: Виконання тестів

Запустити тести можна або через термінал, або безпосередньо у вашому IDE. Якщо ви використовуєте термінал, виконайте наступне:

python -m unittest price_calculation_test.py

У вашій IDE, наприклад, PyCharm, ви можете використовувати конфігурацію запуску для виконання тестів.

Основи юніт-тестування на Python: вступ

Крок 7: Перевірте результати

Якщо ви успішно виконали тести, ви отримаєте результат, який показує, чи всі тести пройшли. Зелений результат означає, що ваш код працює належним чином.

Крок 8: Розширюйте тести

На додаток до базових тестів, ви можете додати інші відповідні сценарії, щоб підвищити безпеку коду. Не забувайте тестувати як позитивні, так і негативні випадки, щоб переконатися, що ваша логіка працює в усіх ситуаціях.

Основи юніт-тестування на Python: вступ

Резюме - Перший юніт-тест за допомогою Python: основи та реалізація

Написання модульних тестів є важливою навичкою, яка допоможе вам зробити ваш код надійним. У цьому посібнику ви дізналися, як написати свій перший модульний тест на Python, від визначення функції до виконання та перевірки результатів. Ретельне тестування значно покращить ремонтопридатність вашого коду і дозволить виявити проблеми на ранніх стадіях.

Часті запитання

Як створити юніт-тесту Python? Щоб створити юніт-тест у Python, створіть клас test, який успадковується від unittest.TestCase, і напишіть тести як методи цього класу.

Навіщо писати модульні тести?Модульні тести допомагають виявити помилки на ранніх стадіях і переконатися, що ваші функції працюють за призначенням.

Як запускати модульні тести?Ви можете запускати модульні тести через термінал за допомогою python -m unittest [ім'я файлу] або безпосередньо у вашому IDE.

Які існують хороші практики для модульного тестування? Хорошапрактика включає в себе як позитивні, так і негативні тестові сценарії, а також перевірку типів даних. Регулярність виконання також важлива для негайної перевірки змін у коді.