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. В майбутньому плануються записи з оглядом усіх можливостей цього фреймворку.