python中的部分carrage返回
我试图在测试运行中添加打印,显示有多少测试通过,但我不想使用全回车 它应该是这样的: my_test_module.MyTestCase.test_大约10% my_test_module.MyTestCase.test_大约20% my_test_module.MyTestCase.test_某物100% my_test_module.MyTestCase.test_某些内容正常 都在同一条线上 我不能使用“\r”,因为它将覆盖整行。我需要一种使用给定字母数的“部分回车”的方法python中的部分carrage返回,python,nose,carriage-return,Python,Nose,Carriage Return,我试图在测试运行中添加打印,显示有多少测试通过,但我不想使用全回车 它应该是这样的: my_test_module.MyTestCase.test_大约10% my_test_module.MyTestCase.test_大约20% my_test_module.MyTestCase.test_某物100% my_test_module.MyTestCase.test_某些内容正常 都在同一条线上 我不能使用“\r”,因为它将覆盖整行。我需要一种使用给定字母数的“部分回车”的方法 我该怎么做?
我该怎么做?您确实知道测试类和方法,因为这是您打印进度的地方,所以您可以使用
'\r'
并在完成程度旁边打印前缀
from sys import stderr
import time
for i in range(10, 100, 10):
print('\rmy_test_module.MyTestCase.test_somthing: {} %'.format(i), end='', file=stderr)
time.sleep(1)
print('\rmy_test_module.MyTestCase.test_somthing: ok ', file=stderr)
如果没有,则可能可以使用退格
\010
:
from sys import stderr
import time
class BsPrinter:
def __init__(self):
self.previous_length = 0
def output(self, msg):
print('\010' * self.previous_length + msg, end='', file=stderr)
self.previous_length = len(msg)
print('my_test_module.MyTestCase.test_somthing: ', end='', file=sys.stderr)
bs = BsPrinter()
for i in range(10, 100, 10):
bs.output('{} %'.format(i))
time.sleep(1)
bs.output('')
print('ok', file=stderr)
您也可以选择执行以下操作:
import sys
import time
print("hello", end="")
sys.stdout.flush()
time.sleep(10)
print("\b\b\b\b\bworld", end="")
“\b”是退格字符。这应该允许您备份和覆盖部分行,但我认为只需重新打印另一个答案中的整行内容就更容易、更清晰了 等等,你想要一个新的行而不是打印一个新的行吗?谢谢!那正是我想要的@在这种情况下,你可以考虑接受我的回答。