文档字符串中用>>>写的语句是doctests。
它允许您通过运行文档中嵌入的示例并验证它们是否产生预期结果来测试您的代码。它解析帮助文本以查找示例,运行它们,然后将输出文本与预期值进行比较。
在您的情况下,PyCharm 完成了在文档字符串中突出显示 python 代码的额外任务。它不会影响您正常的功能执行,因此您无需担心。
示例:
假设我有一个名为doctest_simple_addition 的脚本,我在其中为add() 函数编写了一些文档测试,其中一些测试用例提供了正确的输出,而一些则引发了异常。然后我可以通过运行这些文档测试来验证我的函数是否产生了预期的结果。
doctest_simple_addition.py
def add(a,b):
"""
>>> add(1, 2)
3
>>> add(5, 3)
8
>>> add('a', 1)
Traceback (most recent call last):
...
TypeError: cannot concatenate 'str' and 'int' objects
"""
return a + b
要运行文档测试,请通过解释器的-m 选项使用doctest 作为主程序。通常,测试运行时不会产生任何输出。您可以添加-v 选项,然后doctest 将打印它正在尝试的详细日志,并在最后提供摘要。
Doctest 查找以解释器提示符>>> 开头的行以查找测试用例的开头。测试用例以空行或下一个解释器提示结束。
$ python -m doctest -v doctest_simple_addition.py
Trying:
add(1, 2)
Expecting:
3
ok
Trying:
add(5, 3)
Expecting:
8
ok
Trying:
add('a', 1)
Expecting:
Traceback (most recent call last):
...
TypeError: cannot concatenate 'str' and 'int' objects
ok
1 items had no tests:
doctest_simple_addition
1 items passed all tests:
3 tests in doctest_simple_addition.add
3 tests in 2 items.
3 passed and 0 failed.
Test passed.
注意:当 doctest 看到 traceback 标题行(Traceback (most recent call last): 或 Traceback (innermost last):,取决于您运行的 Python 版本)时,它会向前跳过以查找异常类型和消息,完全忽略中间的行。
这样做是因为回溯中的路径取决于模块在给定系统上的文件系统上的安装位置,并且不可能编写可移植测试,因为路径会因系统而异。