最小验证框架

minimal_validator的Python项目详细描述


最小验证程序

minimal_validator是一个非常简单的python验证框架

安装

建议安装到virtualenv中另请参见pipenv

  • 作为外部依赖项从pipy安装:$ pip install minimal-validator
  • 本地安装源:$ pip install -e .
  • 运行单元测试:$ python setup.py test

概述

最小验证程序是一个非常简单的验证框架框架希望运行一个验证函数列表。每个验证函数必须至少有两个参数:attributedataattribute是一个字符串,表示要验证的data对象中的属性。每个验证函数返回一个Result对象同一属性的几个验证函数可以与combine_validators函数链接在一起。combine_validation_results函数用于对给定的data对象执行所有验证

每个Result都有一个默认为Truekeep_checking布尔值对于给定的属性,如果keep_checkingTrue,则combine_validatorsvalidate_sequentially函数将继续收集结果。如果是Falsevalidate_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

虽然框架包含一些验证函数,但它将接受任何接受attributedata参数的函数,并返回有效的Result对象(如果验证通过且不需要验证消息,则返回None)。

如果您只需要给定属性的一个验证函数,则可以将该函数包装在lambda中,而不使用combine_validators

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么只为字符数组重载println方法,而不为字符串、整数等其他数组重载?   java将快速线程返回到池中,而不是等待慢速线程   创建jar文件时java SwingWorker不工作   java如何将依赖注入RabbitListener   java如何在gradle任务中通过scp复制目录?   java在MySql数据库中创建表时,遇到NullPointerException   java HTTP Status 500 Servlet执行引发异常   在JAVA中对arraylist使用继承时出错   java PowerMockito未完成存根异常   如果没有错误/警告增加到某个极限,java是否停止在eclipse中构建项目或使用maven?   java Robolectric如何测试DateFormat。getBestDateTimePattern()   google云平台GCP数据存储Java API,构建一个空值实体   VerifyListener和FocusListener之间的java冲突   安卓是否可以在Java中的另一个方法内部强制调用一个方法?   JavaWindows7、JDK1.8、SpringBoot应用程序JAR在方法安全性方面占用了大量时间。getProviders()返回   Bean提供程序的java错误消息   java Slick动画每帧必须有一个持续时间   java无法在Trie中设置isLeaf标志   java为什么JVM不能创建包含main方法的类的对象,以便从该类访问main方法,如果它具有该类的名称?   java Apache Camel+CXF端点身份验证