2008-08-31 2 views
17

Имеет ли в Python модульный модуль тестирования, совместимый со стандартным xUnit-интерфейсом тестовой среды? Если да, то что это, где оно, и хорошо ли это?Модульные тесты в Python

ответ

23

Python имеет несколько испытательных рамок, включая unittest, doctest и nose. Самый xUnit-подобный - unittest, который документирован на Python.org.

3

Там в testoob который довольно полный набор test.Also XUnit-то есть, и имеет хороший вариант отчетности

0

Существует также PyUnit, которые могли бы быть то, что ты ищешь.

2

@Greg: PyUnit входит в стандартную библиотеку, как unittest

2

Рассмотрим py.test. Не совсем аналогично NUnit, но очень хорошо, с хорошими функциями, включая автоматическое обнаружение тестов и «Наблюдение за тестами и кодом», - когда что-то меняется, перезапускают тесты, которые потерпели неудачу в последний раз. Как только все тесты пройдут, переключитесь на запуск всех тесты, когда что-то меняется ». вариант.

0

Никогда не использовал xUnit, поэтому я не могу сказать вам, являются ли рамки хорошими/плохими сравнительно, но here - это сценарий, который я написал, который использует фреймворк unittest (чтобы проверить API работает так, как он должен), и доктрист (чтобы проверить примеры, которые я дал работе)

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

9

Я рекомендую nose.

Это самый Pythonic модульных тестовых фреймворков. Тест-бегун запускает как доктрины, так и unittests, поэтому вы можете использовать любой стиль теста, который вам нравится.

+0

Ссылка на нос мертва. – pefu 2016-03-06 13:35:26

1

Я рекомендую Нос.

После разумной простой установки вам просто нужно запустить «nosetests» в папке проекта, а Nose найдет все ваши тесты и запустит их. Мне также нравится коллекция плагинов (покрытие, GAE и т. Д.) И способность звонить Nose непосредственно из моих сценариев Python.

0

Нос кажется лучшим сочетанием гибкости и удобства. Он запускает unittests, doctests, охват (с расширением) и py.test-подобные тесты из одной структуры и делает это превосходно. У него достаточно популярность, что у нее была интегрированная интеграция IDE для Komodo Edit, и я не удивлюсь, увидев ее в другом месте.

Мне это нравится по одной серьезной причине: я почти всегда учусь, прежде чем писать более обширные тесты в другой структуре. Это потому, что для базовых тестов доктрины убивают двух зайцев одним камнем. Вы получаете исполняемые тесты (хотя они немного неуклюжи, чтобы писать хорошо иногда), а также документацию API и интерактивную документацию одновременно. нос будет запускать их с добавленным расширением доктрины, когда вы используете опцию командной строки (--with-doctest).

Я говорю, что это произошло из py.test как мой бывший фаворит. Хотя это здорово, тесты на нос настолько похожи на меня, что я не скучаю по нему, и мне нравится интеграция различных тестовых методик под одной крышей, так сказать. YMMV, но я рекомендую внимательно посмотреть на нос, прежде чем выбрать другой. Если вы не знакомы с испытаниями py.test, вы также должны посмотреть на них. Я нахожу их потрясающими, потому что они обычно пишутся таким образом, что их можно легко отлаживать без рамки тестирования, которая делает менее сложную систему, участвующую в сеансе отладки. Я считаю, что это бесценно, в то время как они также легче писать, чем тесты unittest, на мой взгляд.

Смежные вопросы