from formencode.validators import CreditCardValidator, Invalid cc = CreditCardValidator() def validate(cctype, ccnumber): try: cc.validate_python({'ccNumber': ccnumber, 'ccType': cctype}, None) except Invalid, e: return e.unpack_errors()['ccNumber'] messages = cc.message def test_cc(): assert validate('visa', '4'+('1'*15)) is None assert validate('visa', '5'+('1'*12)) == messages('invalidNumber', None) assert validate('visa', '4'+('1'*11) + '2') == messages('invalidNumber', None) assert validate('visa', 'test') == messages('notANumber', None) assert validate('visa', '4'+('1'*10)) == messages('badLength', None)