有没有办法doctest本地定义的功能?作为一个例子我想要
def foo():
""" >>> foo()
testfoo"""
def foo2():
""" >>> 1/0 """
print 'testfoo'
foo2()
Run Code Online (Sandbox Code Playgroud)
不通过测试.但我仍然不想让整个模块的foo2全局化......
我正在运行一个脚本来管理远程(SSH)计算机上的进程.我们称之为five.py
#!/usr/bin/python
import time, subprocess
subprocess.call('echo 0',shell=True)
for i in range(1,5):
time.sleep(1)
print(i)
Run Code Online (Sandbox Code Playgroud)
如果我现在跑
ssh user@host five.py
Run Code Online (Sandbox Code Playgroud)
我想看看输出
0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
逐秒出现在我的标准输出上(就像在本地执行时那样)..会发生什么:我立即从"echo"获得0,其余只在整个程序结束后立即出现.(无法将'five.py'嵌套到bash脚本中;通过'python five.py'调用它;或者使用'print >> sys.stdout,i').
这必须与python写入stdout的方式有关,因为其他程序表现得很正常.一个功能解决方法是
import time, subprocess
import sys
subprocess.call('echo 0',shell=True)
for i in range(1,5):
time.sleep(1)
sys.stdout.write(str(i)+'\n')
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
但是必须有一个比改变我所有的打印陈述更好的解决方案!