捕获输出 (.output())

你可以运行一个命令并将 stdout 和 stderr 捕获到一个字符串中,使用 .output()。

这适用于

  • 捕获来自在屏幕上到处绘制的程序的输出(如 top)。
  • 捕获来自输出特殊终端字符(例如颜色字符)的程序的输出。
  • 与使用用户输入的程序交互。

对于所有上述用例以及更多用例,command.interact() 更适合。

outputtext

#!/bin/bash
echo hello from stdout
>&2 echo "hello from stderr"
raiseerror
#!/bin/bash
echo bad output from stdout
>&2 echo "bad output from stderr"
exit 1

from commandlib import Command

成功

assert Command("./outputtext").output().strip() \
  == "hello from stdout\nhello from stderr"

错误

Command("./raiseerror").output().strip()
commandlib.exceptions.CommandExitError:
"./raiseerror" failed (err code 1), output:

bad output from stdout
bad output from stderr

可执行规范

文档自动生成自 capture-output.story storytests.