0

I would like to test the following Python function using pytest:

def increase_by_one()
    n = int(input())
    return n + 1

How can I write to the stdin/user input request within a function, for testing purposes?

1
  • Where possible, replace calls to input with function parameters. It makes your function easier to test, and pushes I/O towards the "edge" of your program. Commented Jun 25, 2020 at 12:00

1 Answer 1

0

You can write your own input() function which will return a fix string.

save_it = input
input = lambda: 'your_simulated_input'
def test():
    s = input() # returns 'your_simulated_input'
    ...
Sign up to request clarification or add additional context in comments.

2 Comments

input is in the built-in scope. You don't necessarily need to save the reference; it will always be available via builtins.input, and you can simply use del input to stop shadowing the builtin name.
thank's for the hint

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.