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