You have a couple of options here.
1) As MrTuttle stated, adding your user to sudoers with NOPASSWD is preffered. This will prevent needing to store a clear-text root password
/etc/sudoers
yourUser ALL=(OtherUser) NOPASSWD:/path/to/kcalc
will allow you to
$ sudo -u OtherUser kcalc
with out being prompted for a password.
2) Your current script.
Your current script should work, keep in mind, that not every system and prompt capitalizes "Password:" or leaves a space at the end. I find that "assword" is a better string to test with. The other thing to note is that su is asking for the ROOT password, not user dummy. If you don't have the root password, you will need to login as dummy instead (usualy ssh -l dummy localhost)
for some debugging steps, you can try multiple statements during the password phase of your expect. I find it useful to test and report for timeout and eof while developing scripts.
You might want to try this to help see where your script is ending
expect {
-re "(.*)assword:" { sleep 1; send -- "password\r" }
timeout { puts "un-able to login: timeout\n"; return }
eof { puts "Closed\n" ; return }
}