我想测试一些直接使用print
andinput
函数的(python 3)代码。据我了解,最简单的方法是依赖注入:修改代码,使其将输入和输出流作为参数,默认情况下使用sys.stdin
andsys.stdout
并在测试期间传入模拟对象。很明显如何处理print
调用:
print(text)
#replaced with...
print(text, file=output_stream)
但是,input
没有输入和输出流的参数。以下代码是否正确再现了它的行为?
text = input(prompt)
#replaced with...
print(prompt, file=output_stream, end='')
text = input_stream.readline()[:-1]
我查看了 的实现input
,它做了很多魔术,调用sys.stdin.fileno
和检查sys.stdin.encoding
,sys.stdin.errors
而不是调用任何read*
方法——我不知道从哪里开始嘲笑这些。