Я завершил свой первый правильный проект на Python, и теперь моя задача - написать для него тесты.
Поскольку я впервые делаю проект, я впервые пишу для него тесты.
Вопрос в том, как мне начать? Я понятия не имею. Может кто-нибудь указать мне какую-нибудь документацию / учебник / ссылку / книгу, которую я могу использовать, чтобы начать писать тесты (и я предполагаю, в частности, юнит-тестирование)
Любые советы будут приветствоваться на эту тему.
python
unit-testing
testing
user225312
источник
источник
Ответы:
Если вы новичок в использовании юнит-тестов, простейший подход к обучению зачастую самый лучший. Исходя из этого, я рекомендую использовать
py.test
вместо модуля по умолчаниюunittest
.Рассмотрим эти два примера, которые делают то же самое:
Пример 1 (unittest):
Пример 2 (pytest):
Предполагая, что оба файла названы
test_unittesting.py
, как мы запускаем тесты?Пример 1 (unittest):
Пример 2 (pytest):
источник
unit-test
все еще входит в стандартную библиотеку, еслиpy.test
иnose
обеспечивает ту же функциональность с гораздо более простым интерфейсом? Это просто для обеспечения обратной совместимости, илиunittest
имеет некоторые преимущества, которыеpy.test
иnosetest
не могут обеспечить?unittest
пакет все еще достаточно хорош. Это стандарт, что означает, что он гарантированно хорошо работает. Наконец, любому, кто использует ваш код, не нужно устанавливать дополнительные пакеты.В бесплатной книге по Python Dive Into Python есть глава, посвященная модульному тестированию, которая может оказаться вам полезной.
Если вы следуете современным методам, вам, вероятно, следует писать тесты, пока вы пишете свой проект, а не ждать, пока ваш проект будет почти завершен.
Немного поздно, но теперь вы знаете, в следующий раз. :)
источник
На мой взгляд, есть три отличных фреймворка для тестирования Python, которые стоит проверить.
UnitTest - модуль стандартно поставляется со всеми распределениями питона
носом - может работать UnitTest тестов, и имеет меньше шаблонный.
Pytest - также запускает юнит-тесты, имеет меньше шаблонов, лучше отчетности, много интересных дополнительных функций
Чтобы получить хорошее сравнение всех этих, прочитайте введение к каждому на http://pythontesting.net/start-here .
Там также есть расширенные статьи о светильниках и многое другое.
источник
Документы для unittest были бы хорошим местом для начала.
Кроме того, сейчас немного поздно, но в будущем, пожалуйста, подумайте о написании модульных тестов до или во время самого проекта. Таким образом, вы можете использовать их для тестирования по мере продвижения и (теоретически) вы можете использовать их в качестве регрессионных тестов, чтобы убедиться, что изменения в вашем коде не нарушили существующий код. Это даст вам все преимущества написания тестовых примеров :)
источник
unittest
. Как только я пойму что-то новое, я буду больше использовать его для разработки, а также для увеличения количества тестовых случаев для каждого модуля.unittest поставляется со стандартной библиотекой, но я бы рекомендовал вам протестировать нос .
« нос расширяет юнит-тест, чтобы облегчить тестирование ».
Я бы также рекомендовал вам пилинт
« анализирует исходный код Python на наличие ошибок и признаков низкого качества ».
источник
Как уже отвечали другие, уже поздно писать модульные тесты, но не слишком поздно. Вопрос в том, тестируем ли ваш код или нет. Действительно, не так просто протестировать существующий код, даже есть книга об этом: эффективная работа с устаревшим кодом (см. Ключевые моменты или прекурсор PDF ).
Теперь написание юнит-тестов или нет - это ваш звонок. Вам просто нужно знать, что это может быть утомительным занятием. Вы можете заняться этим, чтобы освоить модульное тестирование или сначала рассмотреть вопрос о приемочных (сквозных) тестах, а также начать писать модульные тесты, когда вы измените код или добавите новую функцию в проект.
источник
Тесты носа - отличное решение для юнит-тестирования в python. Он поддерживает как тестовые сценарии, основанные на unittest, так и doctests, и позволяет вам начать с ним с помощью простого файла конфигурации.
источник
nose
иnose2
находятся в режиме обслуживания. Лучше начинать с того,py.test
что у него гораздо больше поддержки