最小验证框架
minimal_validator的Python项目详细描述
最小验证程序
minimal_validator
是一个非常简单的python验证框架
安装
建议安装到virtualenv中另请参见pipenv
- 作为外部依赖项从pipy安装:
$ pip install minimal-validator
- 本地安装源:
$ pip install -e .
- 运行单元测试:
$ python setup.py test
概述
最小验证程序是一个非常简单的验证框架框架希望运行一个验证函数列表。每个验证函数必须至少有两个参数:attribute
和data
attribute
是一个字符串,表示要验证的data
对象中的属性。每个验证函数返回一个Result
对象同一属性的几个验证函数可以与combine_validators
函数链接在一起。combine_validation_results
函数用于对给定的data
对象执行所有验证
每个Result
都有一个默认为True
的keep_checking
布尔值对于给定的属性,如果keep_checking
是True
,则combine_validators
的validate_sequentially
函数将继续收集结果。如果是False
,validate_sequentially
将不会在列表中运行任何后续验证这个想法是,一些错误使得无法继续验证例如,如果未设置属性,则无法对其应用进一步的验证逻辑另一方面,对于密码之类的东西,可以独立地应用一些验证,例如“最小长度”和“特殊字符的存在”等在这种情况下,验证的最终结果将包括所有此类错误,而不是在遇到第一个错误时停止。
示例
下面是从单元测试中获取的示例validate_username_and_password
函数(以及一些辅助函数):
defvalue_has_min_length_6(attribute,data):returnvalue_has_min_length(attribute,data,6)defvalue_has_max_length_12(attribute,data):returnvalue_has_max_length(attribute,data,12)defvalue_has_at_least_one_uppercase_char(attribute,data):returnvalue_matches_at_least(attribute,data,list(string.ascii_uppercase),1)defvalue_has_at_least_one_special_symbol(attribute,data):returnvalue_matches_at_least(attribute,data,list('!@#$%^&*'),1)@pytest.fixturedefvalidate_username_and_password():defvalidate(data):username_validators=combine_validators('username',data,[attribute_exists,value_is_set,value_is_valid_email])password_validators=combine_validators('password',data,[attribute_exists,value_is_set,value_has_min_length_6,value_has_max_length_12,value_has_at_least_one_uppercase_char,value_has_at_least_one_special_symbol])results=combine_validation_results(username_validators,password_validators)return[result.to_dict()forresultinresults]returnvalidate
虽然框架包含一些验证函数,但它将接受任何接受attribute
和data
参数的函数,并返回有效的Result
对象(如果验证通过且不需要验证消息,则返回None
)。
如果您只需要给定属性的一个验证函数,则可以将该函数包装在lambda
中,而不使用combine_validators