#include dans le script Expect

J’ai donc du mal à faire en sorte que TestCases contienne des scripts attendus, j’ai comme 10 TestCases qui commencent et se terminent par les mêmes “fonctions” comme la connexion et la déconnexion, script, comme spawn login.exp ou même mieux les mettre en fonctions?

TC01.exp

 #!/usr/bin/expect -f set timeout 5 #example of getting arguments passed from command line.. #not necessarily the best practice for passwords though... set server [lindex $argv 0] set user [lindex $argv 1] set pass [lindex $argv 2] set no [lindex $argv 3] set counter 0 # connect to server via ssh, login, and su to root send_user "connecting to $server\n" spawn ssh $user@$server #login handles cases: # login with keys (no user/pass) # user/pass # login with keys (first time verification) expect { "> " { } "$ " { } "assword: " { send "$pass\n" expect { "> " { } "$ " { } "assword: " { send_user "\nLogin failed\n" incr counter 1 exit 5 } } } "(yes/no)? " { send "yes\n" expect { "> " { } "$ " { } } } default { send_user "Login failed\n" incr counter 1 exit } } #TEST CASE HERE #login out send "exit\n" expect { "> " {} default {} } if { $counter > 0 } { send_user "\nTestCase finished with some errors!\nFAILED!!!\nERRORS $counter\n"; exit 4; } send_user "\nTestCase finished with SUCCESS!\nERRORS: $counter\n"; 

Donc, je voudrais avoir login et count_error comme fonctions, donc je pourrais créer mes cas de test comme ceci:

TC01.exp

 #!/usr/bin/expect -f set timeout 5 set server [lindex $argv 0] set user [lindex $argv 1] set pass [lindex $argv 2] set no [lindex $argv 3] set counter 0 login($server, $user, $pass) #TestCase Errors($counter) exit 

On s’attend à ce que Tcl contienne des liens vers pty et fork (). Tous sont très bien décrits sur http://tcl.tk. Les fonctions de Tcl se font avec proc (regardez ici )

lib.tcl

 proc login {server user pass} { # Your expect code goes here return $errorCount } proc errors {errorCount} { if {$errorCount > 0} { # Your error handling code here } } 

tester:

 #!/usr/bin/env expect source lib.tcl set errors [login $server $user $pass] # your test case here errors $errors