我正在测试一段使用 subprocess.call() 的 Python 代码,因此我无法控制该函数调用。我需要捕获该系统调用的输出以进行断言。我试图将 os.stdout 设置为 StringIO 对象,但这并没有捕获系统调用输出。我该如何解决这个问题?到目前为止,这是我的代码:
要测试的代码(我无法控制):
def runFile(filename):
check_call("./" + filename)
我尝试捕获系统调用输出:
import StringIO
oldout = sys.stdout
try:
sys.stdout = StringIO.StringIO()
runFile("somefile")
output = sys.stdout.getvalue()
assert output == "expected-output"
finally:
sys.stdout = oldout