Остановите тестовый набор, если тестовый набор обнаружил ошибку - PullRequest
7 голосов
/ 25 июля 2011

У меня есть testSuite в Python с несколькими testCases.

В случае сбоя testCase, testSuite продолжается со следующей testCase. Я хотел бы иметь возможность остановить testSuite, когда testCase не удается, или иметь возможность решить, следует ли testSuite продолжить или остановиться.

Ответы [ 4 ]

15 голосов
/ 26 июля 2011

Начиная с Python 2.7, unittest поддержка failfast опция. Это может быть указано в командной строке:

python -m unittest -f test_module

Или при использовании скрипта:

>>> from unittest import main
>>> main(module='test_module', failfast=True)

К сожалению, я еще не выяснил, как указать эту опцию, когда вы используете setuptools и setup.py.

1 голос
/ 25 июля 2011

Вы на самом деле делаете юнит-тесты? Или системные тесты чего-то еще? Если последнее, вас может заинтересовать моя среда тестирования на Python Одна из его особенностей именно это. Вы можете определить зависимости тестовых случаев, и пакет пропустит тесты с ошибочными зависимостями. Он также имеет встроенную поддержку селена и веб-драйвера. Однако это не так легко настроить. В настоящее время в разработке, но в основном работает. Работает на Linux.

1 голос
/ 25 июля 2011

Запустите свои тесты с носом и используйте флаг -x.Это в сочетании с флагом --failed должно дать вам все, что вам нужно.Итак, на верхнем уровне вашего проекта запустите

nosetests -x # with -v for verbose and -s to no capture stdout

В качестве альтернативы вы можете запустить с

nosetests --failed

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

Другие полезные флаги:

nosetests --pdb-failure --pdb

переводит вас в отладчик в тот момент, когда ваш тест не пройден или содержит ошибку

nosetests --with-coverage --cover-package=<your package name> --cover-html

дает вам раскрашенную HTML-страницу, показывающую, какие строки в вашем коде былитронутый тестовым прогоном

Сочетание всего этого обычно дает мне то, что я хочу.

0 голосов
/ 25 июля 2011

Вы можете использовать sys.exit (), чтобы закрыть интерпретатор python в любой точке вашего тестового примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...