在 Mac 终端上的 doctest 中 运行 +NORMALIZE WHITESPACE 时出错
Error when running +NORMALIZE WHITESPACE in doctest on Mac terminal
当我 运行 在 Mac 终端中进行以下 doctest
>>> import sys
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
... # doctest: +NORMALIZE_WHITESPACE
[1, 2, 3,
4, 5, 6,
7, 8, 9]
>>> sys.stdout.write("This text contains weird spacing.")
... # doctest: +NORMALIZE_WHITESPACE
This text contains weird spacing.
我得到以下输出,最后有一个“33”,这使得该测试失败。
知道如何纠正这个吗?
File "test2.txt", line 8, in test2.txt
Failed example:
sys.stdout.write("This text contains weird spacing.")
# doctest: +NORMALIZE_WHITESPACE
Expected:
This text contains weird spacing.
Got:
This text contains weird spacing.33
**********************************************************************
1 items had failures:
1 of 3 in test2.txt
***Test Failed*** 1 failures.
sys.stdout.write
是 returns 写入的字符数量的函数。 在返回 之前,它将参数写入控制台。因此,当您调用 sys.stdout.write("This text contains weird spacing.")
时,字符串会写入控制台,然后返回字符串的长度 (33
)。这就是 doctest 获得 This text contains weird spacing.33
的原因。
我建议您改用 print
方法:
>>> print("This text contains weird spacing.")
... # doctest: +NORMALIZE_WHITESPACE
This text contains weird spacing.
如果您必须使用 sys.stdout.write
,您可以捕获返回值,这样它会被 doctest
忽略。像这样:
>>> ln = sys.stdout.write("This text contains weird spacing.")
... # doctest: +NORMALIZE_WHITESPACE
This text contains weird spacing.
当我 运行 在 Mac 终端中进行以下 doctest
>>> import sys
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
... # doctest: +NORMALIZE_WHITESPACE
[1, 2, 3,
4, 5, 6,
7, 8, 9]
>>> sys.stdout.write("This text contains weird spacing.")
... # doctest: +NORMALIZE_WHITESPACE
This text contains weird spacing.
我得到以下输出,最后有一个“33”,这使得该测试失败。 知道如何纠正这个吗?
File "test2.txt", line 8, in test2.txt
Failed example:
sys.stdout.write("This text contains weird spacing.")
# doctest: +NORMALIZE_WHITESPACE
Expected:
This text contains weird spacing.
Got:
This text contains weird spacing.33
**********************************************************************
1 items had failures:
1 of 3 in test2.txt
***Test Failed*** 1 failures.
sys.stdout.write
是 returns 写入的字符数量的函数。 在返回 之前,它将参数写入控制台。因此,当您调用 sys.stdout.write("This text contains weird spacing.")
时,字符串会写入控制台,然后返回字符串的长度 (33
)。这就是 doctest 获得 This text contains weird spacing.33
的原因。
我建议您改用 print
方法:
>>> print("This text contains weird spacing.")
... # doctest: +NORMALIZE_WHITESPACE
This text contains weird spacing.
如果您必须使用 sys.stdout.write
,您可以捕获返回值,这样它会被 doctest
忽略。像这样:
>>> ln = sys.stdout.write("This text contains weird spacing.")
... # doctest: +NORMALIZE_WHITESPACE
This text contains weird spacing.