def test_set_rules_warning_rule_is_false(): ''' test_set_rules method warning_rule is false ''' v = Validator() v.set_rules('string', 'strssss', warning_rule=False)
def test_set_rules_warning_rule_is_true(): ''' test set_rules method warning_rule is true ''' v = Validator() with pytest.raises(RulesError): v.set_rules('string', 'strssss', warning_rule=True)
def test_vlde_return_format_is_object(): ''' 测试返回 object 类型的验证信息 ''' v = Validator(return_format='object') result1 = v.set_rules('string', 'str') assert result1.status is True result2 = v.set_rules('string', 'dict') assert result2.status is False
def test_vlde_return_format_is_exception(): ''' test return_format is exception ''' v = Validator(return_format='exception') try: hello = 'hello, world' world = 'world, hello' v.set_rules(hello, 'required|str') v.set_rules(world, 'required|str') except ValidateError as e: print(e)
def test_set_rules(): '''set_rules 參數測試''' v = Validator() v.set_rules(None) v.set_rules('string', rule=None) v.set_rules('string', schema='str') v.set_rules(dict(hello='world'), schema=dict())
def test_email(): '''email rule validate''' v = Validator() v.set_rules('*****@*****.**', 'email') v.set_rules('*****@*****.**', 'email') with pytest.raises(ValidateError): v.set_rules('emailemail', 'email')
def test_schema_list(): v = Validator() v.set_rules([10, 20, 'string'], schema=['int', 'int', 'str']) v.set_rules([20, 30, ['hello']], schema=['int', 'int', ['str']]) v.set_rules([20, 30, ['']], schema=['int', 'int', 'required'])
def test_tuple(): '''test tuple type ''' v = Validator() v.set_rules((), 'tuple') v.set_rules((123, ), 'tuple') with pytest.raises(ValidateError): v.set_rules('', 'tuple') with pytest.raises(ValidateError): v.set_rules({}, 'tuple') with pytest.raises(ValidateError): v.set_rules(float(), 'tuple') with pytest.raises(ValidateError): v.set_rules([], 'tuple') with pytest.raises(ValidateError): v.set_rules(int(), 'tuple') with pytest.raises(ValidateError): v.set_rules(bool(), 'tuple') with pytest.raises(ValidateError): v.set_rules(bytes(), 'tuple') with pytest.raises(ValidateError): v.set_rules(None, 'tuple')
def test_ipv6(): '''test ipv6 rule''' v = Validator() v.set_rules('0000:0000:0000:0000:0000:0000:0000:0000', 'ipv6') v.set_rules('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'ipv6') v.set_rules('0:0:0:0:0:0:0:0', 'ipv6') v.set_rules('f:f:f:f:f:f:f:f', 'ipv6') v.set_rules('::', 'ipv6') v.set_rules('a::a', 'ipv6') with pytest.raises(ValidateError): v.set_rules('ff', 'ipv6') with pytest.raises(ValidateError): v.set_rules('192.168.1.1', 'ipv6')
def test_float(): '''test float type ''' v = Validator() v.set_rules(float(), 'float') v.set_rules(123.456, 'float') v.set_rules(123.00, 'float') with pytest.raises(ValidateError): v.set_rules('', 'float') with pytest.raises(ValidateError): v.set_rules({}, 'float') with pytest.raises(ValidateError): v.set_rules((), 'float') with pytest.raises(ValidateError): v.set_rules([], 'float') with pytest.raises(ValidateError): v.set_rules(int(), 'float') with pytest.raises(ValidateError): v.set_rules(bool(), 'float') with pytest.raises(ValidateError): v.set_rules(bytes(), 'float') with pytest.raises(ValidateError): v.set_rules(None, 'float')
def test_url(): '''test url rule''' v = Validator() v.set_rules('http://google.com', 'url') v.set_rules('https://www.google.com', 'url') v.set_rules('ftp://google.com', 'url') v.set_rules('www.baidu.com', 'url') with pytest.raises(ValidateError): v.set_rules('baidu.com', 'url') with pytest.raises(ValidateError): v.set_rules('//baidu.com', 'url') with pytest.raises(ValidateError): v.set_rules(None, 'url')
def test_bool(): '''test bool type ''' v = Validator() v.set_rules(bool(), 'bool') v.set_rules(True, 'bool') v.set_rules(False, 'bool') with pytest.raises(ValidateError): v.set_rules('', 'bool') with pytest.raises(ValidateError): v.set_rules({}, 'bool') with pytest.raises(ValidateError): v.set_rules((), 'bool') with pytest.raises(ValidateError): v.set_rules([], 'bool') with pytest.raises(ValidateError): v.set_rules(int(), 'bool') with pytest.raises(ValidateError): v.set_rules(float(), 'bool') with pytest.raises(ValidateError): v.set_rules(bytes(), 'bool') with pytest.raises(ValidateError): v.set_rules(None, 'bool')
def test_max_length(): ''' rule test: max_lenght ''' v = Validator() v.set_rules('string', 'max_length:6') v.set_rules('', 'max_length:0') v.set_rules(None, 'max_length:0') v.set_rules({'hello': 'world'}, 'max_length:1') with pytest.raises(ValidateError): v.set_rules('string', 'max_length:1') with pytest.raises(ValidateError): v.set_rules({'dict': 'world'}, 'max_length:0') with pytest.raises(ValidateError): v.set_rules(('tuple'), 'max_length:0') with pytest.raises(ValidateError): v.set_rules(['list'], 'max_length:0') with pytest.raises(ValidateError): v.set_rules(None, 'max_length:1') with pytest.raises(RulesError): v.set_rules('string', 'max_length:-1') with pytest.raises(RulesError): v.set_rules('string', 'max_length:abc') with pytest.raises(RulesError): v.set_rules('string', 'max_length:') with pytest.raises(RulesError): v.set_rules('string', 'max_length:1 3/4')
def test_str(): '''test str type''' v = Validator() v.set_rules('hello', 'str|string') v.set_rules('', 'str|string') v.set_rules(str(123), 'str|string') with pytest.raises(ValidateError): v.set_rules(123, 'str') with pytest.raises(ValidateError): v.set_rules([], 'str') with pytest.raises(ValidateError): v.set_rules({}, 'str') with pytest.raises(ValidateError): v.set_rules((), 'str') with pytest.raises(ValidateError): v.set_rules(None, 'str') with pytest.raises(ValidateError): v.set_rules(bool(), 'str') with pytest.raises(ValidateError): v.set_rules(float(), 'str') with pytest.raises(ValidateError): v.set_rules(bytes(), 'str')
def test_range(): '''test range rule''' v = Validator() v.set_rules(20, 'range:1-21') v.set_rules(20, 'range:20') v.set_rules(20.0, 'range:20.0-100.0') v.set_rules(int('20'), 'range:20') with pytest.raises(ValidateError): v.set_rules(0, 'range:10-100') with pytest.raises(ValidateError): v.set_rules(0, 'range:1') with pytest.raises(RulesError): v.set_rules('20', 'range:20') with pytest.raises(RulesError): v.set_rules(dict(), 'range:0') with pytest.raises(RulesError): v.set_rules(20, 'range:a-z') with pytest.raises(RulesError): v.set_rules('string', 'range:hello') with pytest.raises(RulesError): v.set_rules(None, 'range:0')
def test_schema_dict(): v = Validator() v.set_rules(dict(name='llnhhy'), schema=dict(name='str')) v.set_rules(dict(name='llnhhy', age=17), schema=dict(name='str', age='int')) v.set_rules(dict(name='luo', girlfriend=dict(name='wu', age=20)), schema=dict(name='str', girlfriend=dict(name='str', age='int'))) v.set_rules(dict(name='luo', girlfriend=dict(name='wu', age=20)), schema=dict(name='str', girlfriend='dict')) v.set_rules(dict(name='luo', girlfriend=['wu', 'sun', 'li']), schema=dict(name='str', girlfriend=['str', 'str', 'max_length:2'])) v.set_rules({ 'name': 'luo', 'age': 20 }, schema={ 'name': 'str', 'age': 'int' }) v.set_rules({'name': 'luo', 'age': 20}, schema={'name': 'str'}) v.set_rules({ 'name': 'luo', 'age': 20 }, schema={ 'name': 'str', 'age': 'int|min_length:2' }) v.set_rules({ 'name': 'luo', 'age': 20 }, rule='dict|max_length:2', schema={ 'name': 'str', 'age': 'int' })
def test_in_list(): ''' rule test length 只支持字符串,整型,浮点型变量 ''' v = Validator() v.set_rules('hello', 'in_list:hello, world') v.set_rules(123, 'in_list:123, 321') v.set_rules(123.4, 'in_list:123.4') with pytest.raises(ValidateError): v.set_rules('str', 'in_list:string') with pytest.raises(ValidateError): v.set_rules('ss', 'in_list:hello, world') with pytest.raises(RulesError): v.set_rules({}, 'in_list:dict') with pytest.raises(RulesError): v.set_rules([], 'in_list:list') with pytest.raises(RulesError): v.set_rules((), 'in_list:tuple') with pytest.raises(RulesError): v.set_rules(None, 'in_list:None')
def test_dict(): '''test dict type''' v = Validator() v.set_rules({}, 'dict') v.set_rules(dict(), 'dict') with pytest.raises(ValidateError): v.set_rules('', 'dict') with pytest.raises(ValidateError): v.set_rules([], 'dict') with pytest.raises(ValidateError): v.set_rules((), 'dict') with pytest.raises(ValidateError): v.set_rules(int(), 'dict') with pytest.raises(ValidateError): v.set_rules(float(), 'dict') with pytest.raises(ValidateError): v.set_rules(bytes(), 'dict') with pytest.raises(ValidateError): v.set_rules(bool(), 'dict') with pytest.raises(ValidateError): v.set_rules(None, 'dict')
def test_length(): '''rule test length''' v = Validator() v.set_rules('string', 'length:6') v.set_rules('', 'length:0') v.set_rules(['list1'], 'length:1') v.set_rules({'dict': 'dict'}, 'length:1') v.set_rules(('hello', 'world'), 'length:2') v.set_rules(None, 'length:0') v.set_rules(20, 'length:2') with pytest.raises(ValidateError): v.set_rules('string', 'length:0') with pytest.raises(ValidateError): v.set_rules(None, 'length:1') with pytest.raises(ValidateError): v.set_rules(20, 'length:20') with pytest.raises(RulesError): v.set_rules('string', 'length:-1') with pytest.raises(RulesError): v.set_rules('string', 'length:') with pytest.raises(RulesError): v.set_rules('string', 'length:3/4')
def test_function(): ''' 用户自定义验证函数 支持匿名函数 ''' def valid(key): if key == 'string': return True else: return False v = Validator() v.set_rules('string', callback=valid) v.set_rules('string', callback=lambda x: x == 'string') v.set_rules('string', callback=None) v.set_rules(['hello'], callback=lambda x: x == ['hello']) v.set_rules({'name': 'vlde'}, callback=lambda x: x == dict(name='vlde')) v.set_rules(('name', 'vlde'), callback=lambda x: x == ('name', 'vlde')) v.set_rules(123, callback=lambda x: x == 123) v.set_rules(123.4, callback=lambda x: x == 123.4) v.set_rules(True, callback=lambda x: x == True) v.set_rules(bytes(123), callback=lambda x: x == bytes(123)) with pytest.raises(ValidateError): v.set_rules('string', callback=lambda x: x == 'key') with pytest.raises(ValidateError): v.set_rules(bytes(123), callback=lambda x: x == bytes(1234)) with pytest.raises(RulesError): v.set_rules('string', callback='str', warning_rule=True)
def test_ipv4(): '''test ipv4 rule''' v = Validator() v.set_rules('192.168.1.1', 'ipv4') v.set_rules('255.255.255.255', 'ipv4') v.set_rules('0.0.0.0', 'ipv4') with pytest.raises(ValidateError): v.set_rules('192.168.1111', 'ipv4') with pytest.raises(ValidateError): v.set_rules('-1-1-1-1', 'ipv4') with pytest.raises(ValidateError): v.set_rules(None, 'ipv4')