Тестирование носа - рамки
Проект носа вышел в 2005 году, через год после py.testполучил свой современный облик. Он был написан Джейсоном Пеллерином для поддержки тех же тестовых идиом, которые были впервые предложены py.test, но в пакете, который проще установить и поддерживать.
В nose модуль можно установить с помощью утилиты pip
pip install nose
Это установит модуль носа в текущем дистрибутиве Python, а также файл nodetest.exe, что означает, что тест можно запустить с помощью этой утилиты, а также с помощью переключателя –m.
C:\python>nosetests –v test_sample.py
Or
C:\python>python –m nose test_sample.py
nose собирает тесты из unittest.TestCaseподклассы, конечно. Мы также можем писать простые тестовые функции, а также тестовые классы, которые не являются подклассами unittest.TestCase. Нос также предоставляет ряд полезных функций для написания временных тестов, тестирования исключений и других распространенных случаев использования.
noseсобирает тесты автоматически. Нет необходимости вручную собирать тестовые наборы в наборы тестов. Запуск тестов является отзывчивым, посколькуnose запускает тесты, как только загружается первый тестовый модуль.
Как и в случае с модулем unittest, nose поддерживает фикстуры на уровне пакета, модуля, класса и тестового примера, поэтому дорогостоящая инициализация может выполняться как можно реже.
Основное использование
Давайте рассмотрим 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)
nose можно интегрировать с DocTest с помощью with-doctest опция в командной строке athe bove.
\nosetests --with-doctest -v nosetest.py
Вы можете использовать nose в тестовом скрипте -
import nose
nose.main()
Если вы не хотите, чтобы тестовый скрипт завершал работу с 0 в случае успеха и 1 в случае неудачи (например, unittest.main), используйте вместо этого нос.run () -
import nose
result = nose.run()
Результат будет истинным, если тестовый запуск прошел успешно, или ложным, если он не прошел или вызывает неперехваченное исключение.
noseподдерживает фикстуры (методы установки и удаления) на уровне пакета, модуля, класса и теста. Как и в случае с приспособлениями py.test или unittest, установка всегда запускается перед любым тестом (или набором тестов для тестовых пакетов и модулей); teardown запускается, если установка завершилась успешно, независимо от статуса тестового запуска.