Pytest – це фреймворк для написання автоматичних тестів (unit, API, GUI, Data Base) на мові програмування Python.

Встановлення pytest

В прикладі я буду використовувати оточення virtualenv, для ознайомлення можна подивитись нотатку:

Virtualenv – інструмент для створення ізольованих середовищ python

Встановлення pytest в оточення:

pip install pytest

Перевірити встановлену версію:

pytest -V
# pytest 7.4.3

Написання тестів з використанням pytest

За замовчуванням pytest очікує, що наші тести будуть розташовані у файлах, імена котрих починаються на test_ або закінчуються на _test.py.

Створюю python модуль first_test.py, і додаю до нього кілька математичних функцій, на котрі в подальшому планую написати тести:

Тепер додам у first_test.py тести, для перевірки коректності роботи функцій. Код тестів:

def test_get_addition():
    result = get_addition(3, 2)
    assert result == 5


def test_get_substraction():
    result = get_substraction(3, 2)
    assert result == 2


def test_get_multiply():
    result = get_multiply(3, 2)
    assert result == 6

На що слід звернути увагу:

  • pytest очікує що тестові методі та функції мають назву яка починається на test_
  • для порівняння фактичного результату з очікуваним pytest використовує простий оператор assert, який легко запам’ятати та використовувати

Запуск тестів та аналіз результатів

Один з варіантів запуску тестів, це просто виконати команду pytest в командному рядку, знаходячись в директорії з тестовими модулями. Результат виконання цієї команди:

Я навмисно зробив помилку в одному з тестів, щоб подивитися на логування помилок. На що слід звернути увагу:

  • pytest проаналізував модулі в поточній директорії, знайшов first_test.py а всередині нього 3 тести
  • під час виводу результату у форматі <first_test.py . F .> успішний тест помічається як зелена крапка, невдалий як червона літера F
  • в секції FAILURES можна побачити деталі невдалого тесту
  • в завершенні відображається сумарна статистика вдалих/невдалих тестів та час виконання

Якщо до команди pytest додати параметр -v результат буде виглядати більш деталізовано:

Можна помітити, що тепер замість крапок та літер F, виводиться інформація у форматі <назва модуля :: назва тесту результат>

Це була перша ознайомлювальна нотатка з pytest. В майбутньому плануються записи з оглядом усіх можливостей цього фреймворку.