TelnetLibrary

Здравствуйте!

Простой учебный пример.

*** Settings ***
Library           Telnet
Library           OperatingSystem

*** Variables ***
${IP}             192.168.1.2
${PASSWORD}       ********
${USER}           *****
${PROMPT}         ${USER}>
${PORT}           23  

*** Test Cases ***
Connect
    [Documentation]    This keyword make Telnet connection with ${host} ${port} ${user} ${password}
    TelnetConn    ${IP}    23    ${USER}    ${PASSWORD}    ${PROMPT}
    #Set Timeout    3.0
    Execute Command    dir
    Read Until    ${USER}${PROMPT}
    Close Connection

*** Keywords ***
TelnetConn
    [Arguments]    ${ip}    ${port}    ${uname}    ${passwd}    ${prompt}
    Log    ${ip}
    Open Connection    ${ip}    ${port}
    Set Timeout    1.0
    Login    ${uname}    ${passwd}    login:    password:
    Set Prompt    ${prompt}
    Set Timeout    20.0
    Read Until    ${uname}${prompt}

правильно выполняется 25%. В остальных случаях превышение 20 сек тайм-аута. Система, на которую захожу по Телнету - ХР. Если возникла задержка - тест не проходит. При этом в ручном режиме всё работает как часы.

В чём трабл, Ваши предположения?

 

 

надо поставить таймаут побольше, тайм-аут можно поставить на уровне библиотеке или с помощью Set Timeout

Library           Telnet           60.0

и

Set Timeout    1 minutes

Не помогает. Такой же фрагмент теста для .nix (Solaris10) выдаёт порядка 5% неуспешных тестовых случаев.

Вряд ли в тайм-ауте дело.

Пример для .nix:

*** Test Cases ***
Connect
    [Documentation]    This keyword make Telnet connection with ${host} ${port} ${user} ${password}
    TelnetConn    ${IP}    ${PORT}    ${USER}    ${PASSWORD}    ${PROMPT}
    Execute Command    ls
    Read Until    ${PROMPT}
    Close Connection

*** Keywords ***
TelnetConn
    [Arguments]    ${ip}    ${port}    ${uname}    ${passwd}    ${prompt}
    Log    ${ip}
    Open Connection    ${ip}    ${port}
    Set Timeout    1.0
    Login    ${uname}    ${passwd}    login:    Password:
    Set Prompt    ${prompt}
    Set Timeout    2.0
    Read Until    ${prompt}

 

set timeout формат времени должен быть 10 minutes, а не 2.0 - потому что 2.0 это две секунды, за это время может комманда не успеть отработать.