我一直在兜圈子,想办法解决这个问题
我运行一个脚本,它调用pytest
;在终端产生一些输出。这个想法是得到这个输出,然后把它放在一个变量中,这样我就可以把它保存到一个文件中,或者把它打印到某个地方(比如在一个tkinter标签对象中,如果我打算让脚本成为UI的一部分的话)
我确实找到了sys.stdout;但它似乎是用来在屏幕上打印的(本例中是控制台);这不是我要找的。我正在尝试读取发送到控制台并打印的内容
到目前为止,唯一的解决方案是在调用python脚本时从shell执行重定向;遗憾的是,考虑到我不需要脚本中所有操作的全部输出,而只需要pytest
的输出,所以stdout和stderr对我来说并不是一个真正的选项。
我假设数据被缓冲在某个地方,然后发送到屏幕上打印,尽管我尝试使用sys.stdout
时运气不佳
pytest文档中有一节提到了捕获stdout/stderr,但是要么没有包含一些重要的细节,要么我不知道这是如何工作的
def test_myoutput(capsys): # or use "capfd" for fd-level
print("hello")
sys.stderr.write("world\n")
captured = capsys.readouterr()
assert captured.out == "hello\n"
assert captured.err == "world\n"
print("next")
captured = capsys.readouterr()
assert captured.out == "next\n"
除此之外,还有一个名为capsys
的对象,它有一个名为readouterr()
的属性,它应该输出错误(我假设stdout有一个等价的属性);尽管capsys似乎根本不是pytest的一部分
任何建议都将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐