【发布时间】:2018-06-19 19:48:16
【问题描述】:
我已经用 Python 开发了一个应用程序,并且正在使用 Cement CLI 库。我正在使用py.test 和CementTestCase。我可以毫无问题地在测试用例中捕获来自stdout 的输出,使用如下代码:
with EZOTestApp(argv=['view', 'deploys']) as app:
old_stdout = sys.stdout
app.ezo = EZO(app.config["ezo"])
result = StringIO()
sys.stdout = result
app.run()
output = sys.stdout.getvalue()
sys.stdout = old_stdout
assert 'deploy' in output
但是,在尝试使用相同的机制捕获来自Cement 日志扩展的stderr 输出时,不会捕获任何内容(re: 在上述代码中将'stdout' 替换为'stderr')。我看到了一种通过标准 Python 日志记录处理程序来查找输出的方法,我怀疑类似的东西会被使用Cement 日志扩展来捕获stderr,但我无法弄清楚。有人有什么见解吗?
【问题讨论】:
标签: python logging pytest stderr cement