2015-11-17 2 views
0

Я пишу код для автоматизации тестирования с использованием Pexpect Так что в основном Telnet в систему и отправлять команды. Я породил для него ребенка. И я передаю ребенку функционировать. Проходит ли оно по ссылке или передается по значению?Множество ожиданий в pexpect

def test(child,clicommand,min,max,message): 
    child.sendline("xyz") 
    """Basically I am sending only sendline But I need 2 more expects. 
    Because of two execute called before this method. 
    Both the expects are not blocking and the execute""" 
    child.expect("() >") 
    child.expect("() >") 
    child.expect("() >") 
    return 


def execute(child,clicommand): 
    print "Executing CLI command: "+clicommand 
    child.sendline(clicommand) 
    child.expect("() >") 
    return 


child = pexpect.spawn("telnet xx.xx.xx.xx xxxx") 
child.sendline("") 
child.expect("() >") 
execute(child,"abc") 
execute(child,"abc") 
test(child,"xyz",1,2,"Error") 

Так ожидают ли буферизируются или выстраиваются в линию? Как я могу сделать его асинхронным? я даже пытался попробовать, за исключением, но никаких исключений не выбрасываются

+0

Вы задаете три вопроса, и между ними нет четкой связи. Можете ли вы попытаться уточнить проблему, которую вы испытываете? –

ответ

0

Как указано here, вы не можете сделать асинхронный ввод/вывод с тем же процессом, поэтому запирающий алгоритм, как это может работать для вас:

from threading import Lock 
lock=Lock() 

def send_command(str, int):   #int is the repetition number 
    with lock: 
     child.sendline(str) 
     for x in range(int): 
      child.expect("() >") 

Затем вызовите его следующим образом:

def test(): 
    send_command("xyz",3) 

Надеется, что это помогает.

Смежные вопросы