2024-06-17 12:03:12 发布
网友
在pytest测试中,可以使用capfd和capsys装置捕获流。但这在{}中不起作用
pytest
capfd
capsys
还有别的办法吗
我想做的是:
class TestSomething: @classmethod def setup_class(cls, capsys): do_work_and_print_stuff() cls.outerr = capsys.readouterr()
一种解决方法是为sys.stdout和sys.stderr使用包装类:
sys.stdout
sys.stderr
class Logger: def __init__(self, base_stream): self.base_stream = base_stream self.content = '' def write(self, message): self.base_stream.write(message) self.content += message def flush(self): self.base_stream.flush() class TestSomething: @classmethod def setup_class(cls): sys.stdout = Logger(sys.stdout) sys.stderr = Logger(sys.stderr) do_work_and_print_stuff() # Do your thing cls.out = sys.stdout.content cls.err = sys.stderr.content sys.stdout = sys.stdout.base_stream sys.stderr = sys.stderr.base_stream
但是,使用一些pytest内置的功能,如capsys和capfd装置来实现这一点会很好
一种解决方法是为
sys.stdout
和sys.stderr
使用包装类:但是,使用一些
pytest
内置的功能,如capsys
和capfd
装置来实现这一点会很好相关问题 更多 >
编程相关推荐