我正在测试一个包含以下代码片段的 Python 模块。
r, w = os.pipe()
pid = os.fork()
if pid:
os.close(w) # use os.close() to close a file descriptor
r = os.fdopen(r) # turn r into a file object
# read serialized object from ``r`` and persists onto storage medium
self.ofs.put_stream(bucket, label, r, metadata)
os.waitpid(pid, 0) # make sure the child process gets cleaned up
else:
os.close(r)
w = os.fdopen(w, 'w')
# serialize object onto ``w``
pickle.dump(obj, w)
w.close()
sys.exit(0)
return result
所有的测试都通过了,但是关于sys.exit(0)
. 执行时sys.exit(0)
会引发SystemExit
,被py.test
控制台拦截并报错。
我不详细了解py.test
内部做了什么,但看起来它继续进行并最终忽略了子进程引发的此类事件。最后,所有测试都通过了,这很好。
但我想在控制台中有一个干净的输出。
有没有办法py.test
产生干净的输出?
供您参考:
- Debian Jessie,内核 3.12.6
- Python 2.7.6
- pytest 2.5.2
谢谢 :)