在我的一个函数中,我使用subprocess.check_call
调用外部程序,这将产生输出。我如何使用doctest来确保它产生的输出是我期待的输出?
答案 0 :(得分:1)
也许这会有所帮助:
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
参数(我认为这是你的情况)我认为很难捕获命令输出。
希望这是有希望的:)