Python中的模拟标准输出

Python中的模拟标准输出,python,unit-testing,mocking,stringio,Python,Unit Testing,Mocking,Stringio,我不熟悉Python单元测试,尤其是模拟测试。我将如何模拟一个可以执行以下操作的对象?为了完成测试,我只需要一个不会使循环崩溃的对象 for ln in theMock.stdout.readlines() 我试着通过做 Mock(stdout=Mock(readlines= Lambda: [])) 及 但它表示列表对象没有属性stdout 这个怎么样 from mock import Mock readlines = Mock(return_value=[]) stdout = Moc

我不熟悉Python单元测试,尤其是模拟测试。我将如何模拟一个可以执行以下操作的对象?为了完成测试,我只需要一个不会使循环崩溃的对象

for ln in theMock.stdout.readlines()
我试着通过做

Mock(stdout=Mock(readlines= Lambda: []))

但它表示列表对象没有属性
stdout

这个怎么样

from mock import Mock

readlines = Mock(return_value=[])
stdout = Mock(readlines=readlines)
theMock = Mock(stdout=stdout)
print(theMock.stdout.readlines())
输出:

[]

您的
for
循环将被跳过,因为
readlines()
将返回一个空列表。

您的意思是stdin.readlines吗?不,stdout.readlines()是正确的。为什么要使用try to read stdout?你想知道标准输出写了什么吗?这不是我的代码,我只是测试它。但是是的,这就是它应该做的。如此干净。谢谢你,我现在可以回家了!
[]