"""
如果被测代码写入非文本数据,则可以使用capsysbinary固定装置捕获该数据,而不是bytes从readouterr方法返回。
如果被测代码写入非文本数据,则可以使用capfdbinary固定装置捕获该数据,而不是bytes从readouterr方法返回。该capfdbinary夹具上的文件描述符级别运行。
"""
def test_myoutput(capfdbinary): # or use "capfd" for fd-level
print("hello")
sys.stderr.write("world\n")
captured = capfdbinary.readouterr()
#assert captured.out == "hello\n"
assert captured.err == "world\n"
print("next")
captured = capfdbinary.readouterr()
assert captured.out == "next\n"
if __name__ == '__main__':
pytest.main(['-s','test_2.py'])
"""
该readouterr()调用将到目前为止的输出快照化-并将继续捕获。测试功能完成后,将恢复原始流。使用capsys这种方法可以使您的测试从不必在意设置/重置输出流,也可以与pytest自己的每次测试捕获良好地交互。
"""
def test_myoutput(capsys): # or use "capfd" for fd-level
sys.stderr.write("adfasdfds")
captured = capsys.readouterr()
assert captured.out == "hello\n"
assert captured.err == "world\n"
print("next")
captured = capsys.readouterr()
assert captured.out == "next\n"
if __name__ == '__main__':
pytest.main(['-s',"test_2.py"])
说白了一个是以byte作为返回值 一个是以字符串作为返回值,官方文档说是capfdbinary 用来捕获非字符串的异常输出信息,个人觉得capsys够用了 如果大家有不同看法欢迎评论区讨论