pytest有三种捕获输出的方式:
? fd(文件描述符)级别的捕获(默认):所有写入操作系统文件描述符1和2的内容将被捕获。
? sys级别的捕获:只有对Python文件sys.stdout和sys.stderr的写入操作会被捕获,不会捕获对文件描述符的写入操作。
? tee-sys捕获:Python对sys.stdout和sys.stderr的写入操作会被捕获,但同时也会将写入内容传递给实际的sys.stdout和sys.stderr。这允许输出内容实时显示并用于插件,例如junitxml(在pytest 5.4中新增)。
您可以通过命令行来影响输出捕获机制:
pytest -s # 禁用所有捕获
pytest --capture=sys # 将sys.stdout和sys.stderr替换为内存文件
pytest --capture=fd # 同时将文件描述符1和2指向临时文件
pytest --capture=tee-sys # 结合'sys'和'-s',捕获sys.stdout/stderr,并将其传递给实际的sys.stdout/stderr