擅长:python、mysql、java
<p>使其可测试的最简单方法是<a href="http://xunitpatterns.com/Dependency%20Injection.html#Parameter%20Injection" rel="noreferrer">parameter injection</a>:</p>
<pre><code>def getFiveNums(input_func=input):
print("Howdy. Please enter five numbers, hit <enter> after each one")
for i in range(5):
newNum = input_func("Please type in a number:")
numbers.append(newNum)
print("Here are your numbers: ", numbers)
</code></pre>
<p>实际上,不能期望您这样对输入/输出进行单元测试——您不能担心对<code>input</code>的调用可能会失败。最好的选择是传入某种性质的存根方法;类似于</p>
^{pr2}$
<p>所以在您的doctest中,您实际上测试<code>getFiveNums(fake_input)</code>。在</p>
<p>此外,通过打破对<code>input</code><em>现在</em>的直接依赖,如果您以后要将此代码移植到<em>没有使用命令行的其他代码,您可以直接插入新代码来检索输入(无论是GUI应用程序中的对话框,还是基于web的应用程序中的Javascript弹出窗口,等等)。在</p>