我在一个名为test.py的文件中有一个简单的函数(log_return
((见下文(,我正试图用doctest实现它。
import pandas as pd
def log_return(df):
'''Return the log return based on closing prices
>>> df = pd.DataFrame({'Close': [100, 101, 102, 99]}, index = pd.date_range('2022-01-01', periods=4, freq='D'))
>>> log_return(df)
Close r
2022-01-01 100 NaN
2022-01-02 101 0.009950
2022-01-03 102 0.009852
2022-01-04 99 -0.029853
'''
df['r'] = np.log(df['Close']).diff()
然而,当我尝试从命令行(例如$ python test.py
(执行doctest时,我收到了以下与空白有关的错误。如何修复此错误?
ValueError: line 5 of the docstring for __main__.log_return has inconsistent leading whitespace: '2022-01-01 100 NaN'
您需要这样缩进:
'''
...
>>> log_return(df)
Close r
2022-01-01 100 NaN
2022-01-02 101 0.009950
2022-01-03 102 0.009852
2022-01-04 99 -0.029853
'''
请记住,doctest看起来像交互式片段,因此在这种情况下,这意味着应该像在交互式会话中一样对齐(提示和输出(。
现在,一旦修复了这个问题,测试就会失败,但这是一个单独的问题。