it-swarm.com.ru

Написание модульных тестов на Python: с чего начать?

Я завершил свой первый правильный проект в Python, и теперь моя задача - написать для него тесты.

Поскольку я впервые делаю проект, я впервые пишу тесты для него.

Вопрос в том, как мне начать? Я понятия не имею. Может кто-нибудь указать мне какую-нибудь документацию/учебник/ссылку/книгу, которую я могу использовать, чтобы начать писать тесты (и я предполагаю, в частности, юнит-тестирование)

Любые советы будут приветствоваться на эту тему.

513
user225312

Если вы новичок в использовании юнит-тестов, простейший подход к обучению зачастую самый лучший. Исходя из этого, я рекомендую использовать py.test вместо модуль по умолчанию unittest .

Рассмотрим эти два примера, которые делают то же самое:

Пример 1 (unittest):

import unittest

class LearningCase(unittest.TestCase):
    def test_starting_out(self):
        self.assertEqual(1, 1)

def main():
    unittest.main()

if __== "__main__":
    main()

Пример 2 (pytest):

def test_starting_out():
    assert 1 == 1

Предполагая, что оба файла имеют имя test_unittesting.py, как мы запускаем тесты?

Пример 1 (unittest):

cd /path/to/dir/
python test_unittesting.py

Пример 2 (pytest):

cd /path/to/dir/
py.test
95
Tim McNamara

В бесплатной Python book Dive Into Python есть глава о модульном тестировании , которая может оказаться полезной.

Если вы следуете современным методам, вам, вероятно, следует писать тесты, пока вы пишете свой проект, а не ждать, пока ваш проект будет почти завершен.

Немного поздно, но теперь вы знаете, в следующий раз. :)

70
Mark Byers

На мой взгляд, есть три отличных python среды тестирования, которые хорошо проверить.
unittest - модуль поставляется со всеми python дистрибутивами
перенос - может выполнять тесты юнит-тестов и имеет меньше шаблонов.
pytest - также запускает тесты юнит-тестов, имеет меньше шаблонов, лучшую отчетность, множество интересных дополнительных функций

Чтобы получить хорошее сравнение всех этих, прочитайте введение к каждому в http://pythontesting.net/start-here .
Также есть расширенные статьи по светильникам и многое другое.

37
Okken

Документы для nittest были бы хорошим местом для начала.

Кроме того, сейчас немного поздно, но в будущем, пожалуйста, подумайте о написании модульных тестов до или во время самого проекта. Таким образом, вы можете использовать их для тестирования по мере продвижения и (теоретически) вы можете использовать их в качестве регрессионных тестов, чтобы убедиться, что изменения в вашем коде не нарушили существующий код. Это даст вам все преимущества написания тестовых примеров :)

34
Justin Ethier

unittest поставляется со стандартной библиотекой, но я бы порекомендовал вам тесты на нос.

" нос расширяет юнит-тест, чтобы облегчить тестирование. "

Я также рекомендую вам pylint

" анализирует исходный код Python на наличие ошибок и признаков низкого качества. "

27
ssoler

Как уже отвечали другие, уже поздно писать модульные тесты, но не слишком поздно. Вопрос в том, является ли ваш код тестируемым или нет. Действительно, тестировать существующий код нелегко, об этом даже есть книга: Эффективная работа с устаревшим кодом (см. ключевые моменты или предшественник PDF ).

Теперь написание юнит-тестов или нет - ваш звонок. Вам просто нужно знать, что это может быть утомительным занятием. Вы можете заняться этим, чтобы освоить модульное тестирование или сначала рассмотреть вопрос о приемочных (сквозных) тестах, а также начать писать модульные тесты, когда вы измените код или добавите новую функцию в проект.

8
philant

тесты носа - отличное решение для юнит-тестирования в python. Он поддерживает как тестовые сценарии, основанные на unittest, так и doctests, и позволяет вам начать с ним с помощью простого конфигурационного файла.

3
Daniel Kluev