格式化文档测试的快速方法



假设我编写以下函数:

def my_marvellous_list(my_list):
    return 'What a marvellous list!'

并希望添加一个文档测试,以验证

my_marvellous_list([4, 5, 10, 7, 3, 8, 50, 3, 1, 8, 40, 87, 4, 2, 756756, 20, 10, 5, 30, 5, 543, 7, 8])

返回'What a marvellous list!'

然后我需要修改我的函数,如下所示:

def my_marvellous_list(my_list):
    """
    >>> my_marvellous_list([4, 5, 10, 7, 3, 8, 50, 3, 1, 8, 40, 87, 4, 2,
    ...      756756, 20, 10, 5, 30, 5, 543, 7, 8])
    'What a marvellous list!'
    """
    return 'What a marvellous list!'

为了将测试插入文档字符串,我必须在每个命令的开头添加>>>,在每个挂起缩进的开头添加...

手动完成这可能会变得乏味 - 是否存在将纯 Python 转换为文档测试格式的自动方法?

IPython有一个%doctest_mode魔术命令,可以将其提示更改为标准的doctest格式。

In [1]: def my_marvellous_list(my_list):
   ...:     return 'What a marvellous list!'
   ...: 
In [2]: %doctest_mode
Exception reporting mode: Plain
Doctest mode is: ON
>>> my_marvellous_list([4, 5, 10, 7, 3, 8, 50, 3, 1, 8, 40, 87, 4, 2,
...     756756, 20, 10, 5, 30, 5, 543, 7, 8])
'What a marvellous list!'
>>> 

最新更新