python中的部分carrage返回

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”,因为它将覆盖整行。我需要一种使用给定字母数的“部分回车”的方法 我该怎么做?

我试图在测试运行中添加打印,显示有多少测试通过,但我不想使用全回车

它应该是这样的:

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”是退格字符。这应该允许您备份和覆盖部分行,但我认为只需重新打印另一个答案中的整行内容就更容易、更清晰了

等等,你想要一个新的行而不是打印一个新的行吗?谢谢!那正是我想要的@在这种情况下,你可以考虑接受我的回答。