Я использую встроенный в Python модуль unittest и хочу написать несколько некритичных тестов.
Я имею в виду, если моя программа проходит такие тесты, это здорово! Впрочем, если не пройдет, то не особо проблема, программа все равно будет работать.
Например, моя программа предназначена для работы с нестандартным типом «А». Если он не работает с «А», значит, он сломан. Однако для удобства большая часть из них также должна работать с другим типом "B", но это не обязательно. Если он не работает с «Б», то он не сломан (потому что он все еще работает с «А», что является его основным назначением). Не работать с "В" не критично, я просто пропущу "бонусную фичу", которую мог бы иметь.
Другой (гипотетический) пример — при написании OCR. Алгоритм должен распознавать большинство изображений из тестов, но ничего страшного, если некоторые из них не пройдут. (и нет, я не пишу OCR)
Есть ли способ написать некритические тесты в unittest (или другой среде тестирования)?
Решение проблемы
С практической точки зрения я бы, вероятно, использовал операторы печати, чтобы указать на ошибку в этом случае. Более правильное решение — использовать предупреждения:
http://docs.python.org/library/warnings.html
Однако вы можете использовать средство ведения журнала для создания более подробной записи результатов вашего теста (т. е. настроить отказы класса "B" для записи предупреждений в журналы).
http://docs.python.org/library/logging.html
Редактировать:
Как мы справляемся с этим в Django, так это то, что у нас есть некоторые тесты, которые мы ожидаем провалить, и у нас есть другие, которые мы пропускаем в зависимости от среды. Поскольку мы обычно можем предсказать, ДОЛЖЕН ли тест пройти или провалиться (т. е. если мы не можем импортировать определенный модуль, значит, в системе его нет, и поэтому тест не будет работать), мы можем разумно пропускать неудачные тесты. Это означает, что мы по-прежнему запускаем каждый тест, который пройдет, и нет тестов, которые «могут» пройти. Модульные тесты наиболее полезны, когда они работают предсказуемо, и возможность определить, ДОЛЖЕН ли тест пройти тест, прежде чем мы его запустим, делает это возможным.
Комментариев нет:
Отправить комментарий