私の関数の 1 つで、subprocess.check_call
出力を生成する を使用して外部プログラムを呼び出しています。doctest を使用して、生成している出力が期待どおりのものであることを確認するにはどうすればよいですか?
1 に答える
2
多分これは助けることができます:
import sys
import tempfile
import subprocess
def example(output):
r""" Do something ...
>>> output = example('Processing file ...')
>>> print output # doctest:+ELLIPSIS
'Processing file ...'
Check how many file was processed.
>>> [line.startswith('Processing file')
... for line in output.splitlines()].count(True)
1
"""
cmd = "print '%s'" % (output, )
with tempfile.TemporaryFile() as output:
subprocess.check_call([sys.executable, '-c', cmd], stdout=output)
output.seek(0)
res = output.read()
return res
if __name__ == '__main__':
import doctest
doctest.testmod()
ご覧のとおりstdout
、subprocess.check_call
関数の引数を使用してコマンドの出力を取得できるようにしましたが、stdout
引数を使用していない場合(これはあなたの場合だと思います)、コマンドをキャプチャするのは非常に難しいと思います出力。
これが希望的だったことを願っています:)
于 2011-06-10T09:58:49.067 に答える