Модульные тесты на Python

Есть ли у Python фреймворк модульного тестирования, совместимый со стандартным стилем тестового фреймворка xUnit? Если да, то что это такое, где это и есть ли в этом польза?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
20
0
7 612
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

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

Есть testoob, который представляет собой довольно полный набор тестов, а также xUnit-ie и имеет удобную опцию создания отчетов.

Также есть PyUnit, который может быть тем, что вы ищете.

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

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

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

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

Рекомендую нос.

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

Ссылка на нос мертва.

pefu 06.03.2016 16:35

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

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

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

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

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

Другие вопросы по теме