Testing interactive code using raw_input

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon Mar 10 11:59:03 EDT 2014


Does anyone have any good hints for testing interactive code that uses 
raw_input, or input in Python 3?

A simple technique would be to factor out the interactive part, e.g. like 
this:

# Before
def spam():
    answer = raw_input(prompt)
    return eggs(answer) + cheese(answer) + toast(answer)

# After
def spam():
    answer = raw_input(prompt)
    return func(answer)

def func(s):
    return eggs(s) + cheese(s) + toast(s)



and then test func. But how about times where it is inconvenient to 
factor out the raw_input stuff out of the function? E.g. suppose you have 
a function that takes some arguments, gathers some more values 
interactively, processes the lot, and then returns a result. With an 
automated test, I can provide the arguments, and check the result, but 
what are my options for *automatically* supplying input to raw_input?



-- 
Steven



More information about the Python-list mailing list