Как мне получить эти 2 случая для передачи в моем коде? - PullRequest
0 голосов
/ 05 апреля 2020

Мне нужно создать код, чтобы при запуске он проходил в консоли для каждого теста.

Мои последние 2 теста должны проверить, используются ли пароль / секрет, за исключением того, что у меня возникают трудности при создании код для этого шага.

Я попытался добавить следующее в начало, чтобы заставить вещи работать:

    if not re.search(r'(password)', candidate):
        error_messages.append('Password may not contain the word "password" in any case.')

    if not re.search(r'(secret)', candidate):
        error_messages.append('Password may not contain the word "secret" in any case.')

Я также попытался использовать квадратные скобки [] вместо скобок выше вокруг секрета и пароль, но это, похоже, ничего не делает. Любые советы?


import re


def validate_password(candidate):
    error_messages = []  # returning empty list indicates password is valid

    if len(candidate) < 6:
        error_messages.append('Password must be at least 6 characters long.')

    if not re.search(r'[A-Z]', candidate):
        error_messages.append('Password must include at least one upper-case letter (A-Z).')

    if not re.search(r'[a-z]', candidate):
        error_messages.append('Password must include at least one lower-case letter (a-z).')

    if not re.search(r'[!@#$%^&*]', candidate):
        error_messages.append('Password must include at least one special character (!@#$%^&*).')

    return error_messages


def main():
    print('Unit testing output...')

    print('\nTest case 1: password too short')
    input_password = 'Ab#45'
    expected_result = ['Password must be at least 6 characters long.']
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 2: password meets all criteria')
    input_password = 'Bc&456'
    expected_result = []
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 3: password missing upper case letter')
    input_password = 'ac&456'
    expected_result = ['Password must include at least one upper-case letter (A-Z).']
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 4: password missing lower-case letter')
    input_password = 'A*3456'
    expected_result = ['Password must include at least one lower-case letter (a-z).']
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 5: password missing special character')
    input_password = 'Ab3456'
    expected_result = ['Password must include at least one special character (!@#$%^&*).']
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 6: password missing multiple of the criteria')
    input_password = '12345'
    msg_1 = 'Password must be at least 6 characters long.'
    msg_2 = 'Password must include at least one upper-case letter (A-Z).'
    msg_3 = 'Password must include at least one lower-case letter (a-z).'
    msg_4 = 'Password must include at least one special character (!@#$%^&*).'
    expected_result = [msg_1, msg_2, msg_3, msg_4]
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 7: password contains word password')
    input_password = 'password'
    expected_result = ['Password may not contain the word "password" in any case.']
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')

    print('\nTest case 8: password contains word secret')
    input_password = 'secret'
    expected_result = ['Password may not contain the word "secret" in any case.']
    actual_result = validate_password(input_password)
    if actual_result == expected_result:
        print('passed')
    else:
        print('failed')


if __name__ == '__main__':
    main()

Спасибо!

PS: Если у кого-то есть хорошие ресурсы для регулярных выражений, пожалуйста, дайте мне знать, эта часть довольно запутанная для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...