我有一个Python3函数,它返回一个多行字符串。我想用doctest测试一下,但没法用。我尝试过使用+NORMALIZE_WHITESPACE
directive,但没有成功。在
def dummy():
"""Dummy test function
>>> dummy() # doctest: +NORMALIZE_WHITESPACE
'''Hello Mum
Hello Dad'''
"""
return """Hello Mum
Hello Dad"""
if __name__ == "__main__":
import doctest
doctest.testmod()
以上代码因以下错误而失败:
^{pr2}$我尝试更改doctest行,以包含一个文本\n
,如下所示:
但这失败了,错误几乎相同:
Failed example:
dummy() # doctest: +NORMALIZE_WHITESPACE
Expected:
'Hello Mum
Hello Dad'
Got:
'Hello Mum\n Hello Dad'
如何使用doctest测试多行字符串输出?在
正如我在评论中所提到的,一个不需要在doctest字符串中使用
\n
文本的方法是print
输出,然后与之匹配,例如问题是
\n
被解释为docstring中的新行,但是doctest需要一个文本反斜杠。在医生的帮助说(重点是我的):
所以他们建议如下(注意
r
前的"""
):如果使用
\\n
而不是\n
,那么没有前导的r
也可以工作,但是最好还是坚持使用可以从python REPL复制粘贴的r
版本。在相关问题 更多 >
编程相关推荐