Модульное тестирование (или юнит-тестирование) — это способ проверки правильности работы отдельной функции, изолированной от большей кодовой базы. Идея состоит в том, что если все модули (юниты) приложения по отдельности работают правильно, то их интеграция пройдет гораздо проще.
В чем важность модульного тестирования?
Модульное тестирование — это всего лишь одна из форм тестирования. В сочетании с другими формами она помогает устранить ошибки в разрабатываемой части программного обеспечения.
Когда несколько функций и классов объединены и при этом одновременно проявляется несколько багов, зачастую бывает трудно определить источник проблемы. При помощи модульного тестирования мы устраняем как можно большее число багов, относящихся к отдельным модулям, чтобы при соединении этих модулей каждый из них работал максимально корректно. Если после соединения возникнут проблемы, нам будет проще выявить их причину, поскольку она скорее всего будет связана с недостатками совместимости модулей.
Unit тесты в Python. Тестирование кода | Базовый курс. Программирование на Python
Инструменты модульного тестирования
В Python для создания тестов есть много инструментов. Некоторые из них, такие как pytest , заменяют встроенный фреймворк unittest . Другие инструменты, такие как nose , являются расширениями, облегчающими создание тестовых случаев. Имейте в виду, что многие из этих инструментов также используются для интеграционного тестирования: с их помощью создаются тестовые случаи (test cases) для проверки одновременной работы нескольких частей кода.
- unittest — это встроенный в стандартную библиотеку инструмент для тестирования кода на Python.
- pytest — инструмент тестирования с упором на обратную совместимость и минимизацию бойлерплейт-кода.
- nose — это расширение unittest, облегчающее создание и выполнение test cases.
- Hypothesis — библиотека Python для создания юнит-тестов. Помогает разработчикам создавать тесты с крайними случаями. Лучший способ начать использовать Hypothesis — воспользоваться хорошо написанным «быстрым стартом».
- mimesis генерирует синтетические тестовые данные, которые можно с пользой применить в ваших тестах.
- testify — это тестовый фреймворк, предназначавшийся для замены распространенной комбинации unittest+nose. Но команда, занимавшаяся testify, переходит на pytest, так что использовать этот фреймворк для новых проектов не рекомендуется.
Ресурсы по модульному тестированию
Юнит-тесты нужны в любом проекте, независимо от используемого языка программирования. Следующие ресурсы дают хороший обзор модульного тестирования с разных точек зрения.
Источник: pythonist.ru
Unit тесты в Python
Писать Тесты в Python – проще чем Ты думаешь!
В этой статье мы разберём как работать с unittest в Python, думаю всем будет очень полезно и интересно.
Также посмотрите статью: «Простой калькулятор на Python», так как на базе этого калькулятора мы и будем тестировать.
Подготовка проекта:
Для начала нам нужно подготовить проект, вы можете этот пункт пропустить, так как мне нужно подготовить калькулятор.
В начале создаём два файла, «calc.py», в нём мы будем хранить функции для вычислений калькулятора, и «test.py», в нём будет происходить всё тестирование.
Давайте поострим что будет в «calc.py»:
def sum ( a , b ) :
return a + b
def sub ( a , b ) :
return a — b
def mul ( a , b ) :
return a * b
def div ( a , b ) :
return a / b
Как видите у нас тут несколько функций, которые отвечают за складывание, вычитание, умножение и деление соответственно, их и будем тестировать, так же можете добавить их в калькулятор, но это не обязательно для теста.
Как работать с unittest в Python:
Теперь перейдём к самому тестированию, тесты будем писать в «test.py», вот что должно быть в нём:
import unittest
import calc
class Test ( unittest . TestCase ) :
def test_sum ( self ) :
self . assertEqual ( calc . sum ( 4 , 7 ) , 11 )
def test_sub ( self ) :
self . assertEqual ( calc . sub ( 10 , 5 ) , 5 )
def test_mul ( self ) :
self . assertEqual ( calc . mul ( 3 , 7 ) , 21 )
def test_div ( self ) :
self . assertEqual ( calc . div ( 10 , 2 ) , 5 )
if __name__ == ‘__main__’ :
unittest . main ( )
Как видите в самом начале файла мы импортируем библиотеку unittest и наш файл «calc.py» где находиться все функции для работы калькулятора.
Потом создаём класс Test, который унаследуем от класса TestCase, это пожалуй самое важное что нужно делать в в классе для тестирования.
Внутри него создаём несколько методов, которые будут запускаться поочерёдно во время тестирования.
Каждый метод использует метод assertEqual() , который в качестве параметров принимает в себя функцию которую нужно проверить, и значение которая она должна вернуть, если она возвращает другое значение, то при тестирование появится ошибка, таким образом и делаем unit тест в Python.
Последние что мы делаем, это код для запуска программы, внутри условия if __name__ == ‘__main__’ , мы запускаем unittest.
Для запуска тестирования введите команду в консоль:
Источник: prognote.ru
Тестирование кода с 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.
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