Здравствуй, Хабрахабр! Хочу предоставить твоему вниманию свой проект для юнит-тестирования. Точнее — инструмента, чтобы задуматься о тестах получше, вместо траты лишнего внимания на создание файлов, объявления импортов, классов и тест-кейсов.
В статье можно найти описание проекта, как его установить и пользоваться, и примеры.
Введение
utbone — библиотека командной строки (ссылка на Github-репозиторий), написанная на Python. Расшифровывается как «unit-testing bone», что в переводе означает «костяк для юнит-тестирования». С помощью одной команды в консоли можно создать шаблон для тестирования. Это позволит сэкономить часть времени на рутинных вещах типа объявления «сетап» функции, тестируя под django, например. Еще одна мини-фича это — «ассершин» в одном из тестов, можно сразу запустить тесты и посмотреть, выполняются ли они вообще в данном каталоге или нет.
utbone mysite/polls/tests test_views django --topping
С помощью команды выше в консоли можно создать следующий python-файл для тестов с названием test_views в папке тестов, направленный на тестирование django с использованием внешних библиотек mock и ddt.
"""
Tests for
"""
from ddt import ddt, data, unpack
from mock import patch
from django.test import TestCase
class Test(TestCase):
"""
Tests for
"""
def setUp(self):
"""
Initialize
"""
pass
def test_first(self):
"""
Verify that
"""
self.assertEqual(1, '1')
@patch('')
def test_second(self, mock_):
"""
Assert that
"""
pass
@data(
('first', 'second', 'expected'),
('first', 'second', 'expected'),
)
@unpack
def test_third(self, first, second, expected):
"""
Make sure when
"""
pass
Базовые шаблоны
Костяки для тестирования отличаются видом тестов и наличием топпингов (все шаблоны доступны в Github по ссылке).
К видам на данном этапе развития проекта относятся:
- unittest — тестирование через встроенный в Python модуль unittest;
- django — костяк, ориентированный на тестирование в django.
Наличие топпингов выражается через флаг --topping в конце команды создания шаблона в консоли. Он позволяет добавить часто используемые программистами mock и ddt в импорты и объявить их основные инструменты в коде — например, декоратор patch и data поверх тест-методов.
...
@patch('')
def test_second(self, mock_):
"""
Assert that
"""
pass
@data(
('first', 'second', 'expected'),
('first', 'second', 'expected'),
)
@unpack
def test_third(self, first, second, expected):
"""
Make sure when
"""
pass
...
Как пользоваться
На данном этапе уже можно начать пользоваться библиотекой. Самый верный способ — установка через pip.
pip install utbone
utbone принимает три аргумента: где создать файл, с каким названием и какого вида.
Можно добавить четвертый — наличие топпингов (через -t или --toppings).
utbone mysite/polls/tests test_views django --topping
С помощью флага --help получите инструкции как пользоваться инструментом уже локально.
utbone --help
Спасибо за уделенное внимание.