Встроенные fixture#

capsys#

from netmiko import ConnectHandler
from paramiko.ssh_exception import AuthenticationException


def send_show_command(device, command):
    try:
        with ConnectHandler(**device) as ssh:
            ssh.enable()
            result = ssh.send_command(command)
            return result
    except AuthenticationException as error:
        print(error)


def test_function_return_value(capsys, first_router_wrong_pass):
    return_value = send_show_command(first_router_wrong_pass, "sh ip int br")
    correct_stdout = "Authentication fail"
    out, err = capsys.readouterr()
    assert out != "", "Сообщение об ошибке не выведено на stdout"
    assert correct_stdout in out, "Выведено неправильное сообщение об ошибке"

monkeypatch#

def check_passwd(username, password, min_length=8):
    if len(password) < min_length:
        print('Пароль слишком короткий')
        return False
    elif username in password:
        print('Пароль содержит имя пользователя')
        return False
    else:
        print(f'Пароль для пользователя {username} прошел все проверки')
        return True


def test_password_min_length(monkeypatch):
    monkeypatch.setattr('builtins.input', lambda x=None: 'user')
    monkeypatch.setattr('getpass.getpass', lambda x=None: '12345')
    assert check_passwd(min_length=3) == True


@pytest.mark.parametrize(
    "username,password,result",
    [
        ('user', '12345', True),
        ('user', '12345user', False)
    ],
)
def test_check_passwd_function(monkeypatch, username, password, result):
    monkeypatch.setattr('builtins.input', lambda x=None: username)
    monkeypatch.setattr('getpass.getpass', lambda x=None: password)
    assert check_passwd(min_length=3) == result