Функциональные требования
Функциональные требования, предъявляемые к разработке
Типизация
При проверке стратегий валидации и обработчика ошибок, поступивших в качестве входных аргументов при создании экземпляра класса AVal
, требуется устанавливать следующее:
список методов проверки не пуст (количество методов 1+), и содержит только объекты вызываемого (callable) типа;
каждый метод проверки способен получать обязательный параметр "Проверяемый объект" и опциональный некоторый перечень именованных параметров (kwargs), являющихся опциями проверки (эти опции могут использоваться внутри самого метода проверки);
каждый метод проверки содержит внутри себя по меньшей мере один вызов исключения;
каждый метод проверки не возвращает ничего (предполагается, что если проверка оказалась успешной, это не требует никаких дополнительных действий; в противном случае должно быть вызвано исключение, которое будет обработано или самим "Валидатором" (если не получен метод обработки) или же методом обработки, переданным в качестве второго аргумента);
обработчик ошибок должен принимать в качестве аргументов исключение и валидируемый объект;
обработчик ошибок должен выполнять некоторую последующую обработку исключительной ситуации, и вывод сообщения об ошибке;
обработчик также должен быть вызываемым (callable), и не должен ничего возвращать (но также обязательно должен поднимать исключение).
Гибкость
При осуществлении проверок по отношению к проверяемому объекту могут использоваться именованные параметры. Благодаря этим параметрам проверки могут быть достаточно гибкими.
Настраиваемые сообщения об ошибках
Выдача сообщения об ошибке может быть описана в обработчике, таким образом, обеспечивается гибкость сообщений об ошибках.
"Встроенная" обработка исключений
Валидатор должен уметь правильно и корректно обрабатывать исключения, возникающие в процессе валидации. В случае возникновения исключения, валидатор должен вызывать обработчик ошибок, если он представлен, а иначе самостоятельно вывести стандартное сообщение об ошибке.
Удобство использования
Валидатор должен поддерживать использование в качестве декоратора для функций (наряду со стандартным сценарием, то есть, через вызов метода валидации объекта "Абстрактный Валидатор").
Последовательность
Если число методов превышает 1, то при условии успешности первого (предыдущего) метода, остальные методы валидации должны выполняться последовательно (в том порядке, в котором они представлены в списке).
Last updated