GOOGLE ADS

пятница, 6 мая 2022 г.

Некритические сбои юнит-тестов

Я использую встроенный в Python модуль unittest и хочу написать несколько некритичных тестов.

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

Например, моя программа предназначена для работы с нестандартным типом «А». Если он не работает с «А», значит, он сломан. Однако для удобства большая часть из них также должна работать с другим типом "B", но это не обязательно. Если он не работает с «Б», то он не сломан (потому что он все еще работает с «А», что является его основным назначением). Не работать с "В" не критично, я просто пропущу "бонусную фичу", которую мог бы иметь.

Другой (гипотетический) пример — при написании OCR. Алгоритм должен распознавать большинство изображений из тестов, но ничего страшного, если некоторые из них не пройдут. (и нет, я не пишу OCR)

Есть ли способ написать некритические тесты в unittest (или другой среде тестирования)?


Решение проблемы

С практической точки зрения я бы, вероятно, использовал операторы печати, чтобы указать на ошибку в этом случае. Более правильное решение — использовать предупреждения:

http://docs.python.org/library/warnings.html

Однако вы можете использовать средство ведения журнала для создания более подробной записи результатов вашего теста (т. е. настроить отказы класса "B" для записи предупреждений в журналы).

http://docs.python.org/library/logging.html

Редактировать:

Как мы справляемся с этим в Django, так это то, что у нас есть некоторые тесты, которые мы ожидаем провалить, и у нас есть другие, которые мы пропускаем в зависимости от среды. Поскольку мы обычно можем предсказать, ДОЛЖЕН ли тест пройти или провалиться (т. е. если мы не можем импортировать определенный модуль, значит, в системе его нет, и поэтому тест не будет работать), мы можем разумно пропускать неудачные тесты. Это означает, что мы по-прежнему запускаем каждый тест, который пройдет, и нет тестов, которые «могут» пройти. Модульные тесты наиболее полезны, когда они работают предсказуемо, и возможность определить, ДОЛЖЕН ли тест пройти тест, прежде чем мы его запустим, делает это возможным.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...