逛着博客园,看到乙醇大佬的一篇随笔 https://www.cnblogs.com/nbkhic/p/9370446.html,于是就在想怎么测试这句hello world
print('hello world')
想法是修改stdout的指向到一个io.StringIO流中,然后把流中的数据与‘hello world’去比较,可是写完之后发现,程序虽然没报错,但是流中无数据写入,百思不得其解;只好换成文件流,代码如下:
import sys def hi(): print('hello world') if __name__ == '__main__': old = sys.stdout with open('test','w') as oFile: sys.stdout = oFile hi() sys.stdout = old with open('test','r') as oFile: if 'hello world' + ' ' == oFile.readline(): print('PASS') else: print('FAIL',file=sys.stderr)
结果也输出了PASS
C:UserssuneeeAppDataLocalProgramsPythonPython36python.exe E:/wangjz/PyWorkSpace/LearnPython/test.py
PASS
Process finished with exit code 0
PS:至于比较字符串‘hello world’后面为什么要加个' ',可以看下print函数说明
def print(*args, sep=' ', end=' ', file=None): # known special case of print """ print(value, ..., sep=' ', end=' ', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream. """ pass