Искам да тествам някакъв (python 3) код, който директно използва функциите print
и input
. Доколкото разбирам, най-лесният начин да направите това е чрез инжектиране на зависимости: модифициране на кода, така че да приема входни и изходни потоци като аргументи, като използвате sys.stdin
и sys.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*
методите - не знам откъде да започна да им се подигравам.
input
, така че това ме улеснява. - person Keith   schedule 05.11.2012input
. - person James   schedule 05.11.2012