Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
213 views
in Technique[技术] by (71.8m points)

python - Enter to raw_input automatically

Just as an example, it might seem illogical. I have a get_name function as below, and wanted to write a automated script to call this function and enter to the raw_input automatically.

def get_name ():
    name = raw_input("Please enter your name : ")
    print "Hi " + name

The automated script as below, what command should I add to enter my value automatically?

def run ():
    get_name ()
    // what should I add here?
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can also substitute stdin with StringIO (aka memory file) instead of real file. This way the entered text will be in your testing code instead of separate text file.

based on Anand S Kumar's (+1):

def run():
    import sys
    import StringIO
    f1 = sys.stdin
    f = StringIO.StringIO('entered text') # <-- HERE
    sys.stdin = f
    get_name()
    f.close()
    sys.stdin = f1

Also, for more sophisticated testing of interactive commandline functions/tools you may want to check the pyexpect package.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...