Нос проект был выпущен в 2005 году, через год после того, как py.test получил свой современный облик. Он был написан Джейсоном Пеллереном для поддержки тех же тестовых идиом, которые были впервые разработаны py.test, но в пакете, который проще в установке и обслуживании.
Носовой модуль можно установить с помощью утилиты pip
pip install nose
Это установит переносной модуль в текущем дистрибутиве Python, а также переносимый нос, что означает, что тест можно запустить с помощью этой утилиты, а также с ключом -m.
C:\python>nosetests –v test_sample.py Or C:\python>python –m nose test_sample.py
Нос собирает тесты из подклассов unittest.TestCase , конечно. Мы также можем написать простые тестовые функции, а также тестовые классы, которые не являются подклассами unittest.TestCase. Нос также предоставляет ряд полезных функций для написания временных тестов, тестирования исключений и других распространенных случаев использования.
Нос собирает тесты автоматически. Нет необходимости вручную собирать тестовые наборы в тестовые наборы. Запуск тестов является отзывчивым, так как нос начинает выполнять тесты, как только загружен первый тестовый модуль.
Как и в случае с модулем unittest, носовая часть поддерживает приборы на уровне пакета, модуля, класса и тестового набора, поэтому дорогая инициализация может выполняться как можно реже.
Основное использование
Давайте посмотрим на nosetest.py, похожий на скрипт, который использовался ранее —
# content of nosetest.py def func(x): return x + 1 def test_answer(): assert func(3) == 5
Для запуска вышеуказанного теста используйте следующий синтаксис командной строки —
C:\python>nosetests –v nosetest.py
Вывод, отображаемый на консоли, будет следующим:
nosetest.test_answer ... FAIL ================================================================ FAIL: nosetest.test_answer ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest self.test(*self.arg) File "C:\Python34\nosetest.py", line 6, in test_answer assert func(3) == 5 AssertionError ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (failures = 1)
Нос можно интегрировать с DocTest с помощью параметра with-doctest в командной строке athe bove.
\nosetests --with-doctest -v nosetest.py
Вы можете использовать нос в тестовом скрипте —
import nose nose.main()
Если вы не хотите, чтобы тестовый скрипт завершал работу с 0 в случае успеха и 1 в случае сбоя (например, unittest.main), используйте вместо этого nose.run () —
import nose result = nose.run()
Результат будет истинным, если тестовый запуск выполнен успешно, или ложным, если он завершится неудачей или вызовет необработанное исключение.
нос поддерживает приспособления (методы установки и разрыва) на уровне пакета, модуля, класса и теста. Как и в случае с py.test или unittest, установка всегда выполняется перед любым тестом (или набором тестов для тестовых пакетов и модулей); Разборка запускается, если установка успешно завершена, независимо от состояния тестового прогона.