Тестирование кода с Python и pytest
Обычно, написание любой программы предполагает запуск ее и проверку результата. И каждое новое изменение в программе требует новой проверки, а что если изменения очень часты. А ведь сэкономленное на постоянных запусках программы времени может оказаться достаточно для того чтобы написать еще одну полноценную программу.
Тестирование вашего кода дает множество преимуществ. Это увеличивает уверенность в том, что код ведет себя так, как вы ожидаете, и гарантирует, что изменения в вашем коде не вызовут регрессии. Написание и сопровождение тестов - это тяжелая работа, поэтому вы должны использовать все имеющиеся в вашем распоряжении инструменты, чтобы сделать ее как можно более безболезненной. Pytest - один из лучших инструментов, которые вы можете использовать для повышения производительности тестирования. В данной статье мы рассмотрим: какие преимущества предлагает pytest и каковы его отличия от встроенного модуля тестирования в Python. Для иллюстрации концепции тестирования кода, мы будем использовать достаточно простые примеры, которые вместе с тем позволяют понять суть.
Установка pytest.
Чтобы выполнить некоторые примеры из статьи, нам необходимо установить pytest.Как и большинство пакетов Python, мы можем установить pytest в виртуальной среде из PyPI с помощью pip:
python -m pip install pytest
Как протестировать код?
Напишем простую программу по выполнению некоторого действия и назовем ее program.py.
def func(x):
return x + 1
Для начала выполним тестирование встроенным в Python модулем unittest.
# unittest.py
from unittest import TestCase
import program
class TryTesting(TestCase):
def test1(self):
self.assertTrue(program.func(4) == 8)
>>>python -m unittest discover
'''
вывод
Failure
Traceback (most recent call last):
File "unittest.py", line 8, in test2
self.assertTrue(program.func(4) == 8)
AssertionError: False is not true
'''
Мы видим что результат выполнения кода не соответствует тому, что должно получиться, о чем и сообщает нам тест. Этот, простейший пример иллюстрирует то, каким образом происходит тестирование кода.
И вместо написания довольно большого количества строк кода в модуле pytest предусмотрено ключевое слово assert:
# my_pytest.py
import program
def test1():
assert program.func(6) == 70
>>>pytest my_pytest.py
'''
вывод
my_pytest.py:4: AssertionError
=================================================== short test summary info ===================================================
FAILED my_pytest.py::test1 - assert 7 == 70
====================================================== 1 failed in 1.14s ======================================================
'''
Таким образом, просто введя команду pytest и название тестового файла в терминале мы получим сообщение с указанием на то, на сколько корректно выполнилась программа.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.