Python Unittest输出 - 是否可以在每个通过/失败行下打印出Unittest中的打印语句?
问题出现的原因是在执行unittests时,输出的print语句无法直接打印在每个pass/fail行下面。这是由于标准输出流(std.io)和标准错误流(std.err)在与终端连接时和重定向到文件时刷新方式不同所导致的。解决方法是重新配置输出流,强制在操作期间刷新它们。
具体的解决方法是在代码中添加以下内容:
import os import sys if __name__ == '__main__': sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 1) sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 1) runner = unittest.TextTestRunner(verbosity=2) unittest.main(testRunner=runner)
通过将stdout和stderr重定向到文件描述符1(标准输出)和文件描述符2(标准错误),然后将缓冲区大小设置为1,即可达到刷新输出流的效果。这样就可以在每个pass/fail行下面打印出print语句的输出。
以上是解决该问题的方法,通过重新配置输出流实现在unittests中打印print语句的输出。