【问题标题】:Doctest NORMALIZE_WHITESPACE does not workDoctest NORMALIZE_WHITESPACE 不起作用
【发布时间】:2013-07-14 14:47:01
【问题描述】:
Failed example:
    p.parse_name('Adams, Michael') 
    # doctest: +NORMALIZE_WHITESPACE
Expected:
    {'first_name': 'Michael', 'last_name': 'Adams','initials': 'MA'}
Got:
    {'first_name': 'Michael', 'last_name': 'Adams', 'initials': 'MA'}

文档字符串是 -

>>> p.parse_name('Adams, Michael') 
... # doctest: +NORMALIZE_WHITESPACE
{'first_name': 'Michael', 'last_name': 'Adams','initials': 'MA'}

【问题讨论】:

  • 为什么不在s',后面加一个空格?
  • 那+NORMALIZE_WHITESPACE有什么用呢?

标签: python doctest


【解决方案1】:

来自the docs

指定时,所有空格序列(空格和换行符)都被视为相等。预期输出中的任何空白序列都将匹配实际输出中的任何空白序列

',' 不包含空格序列,因此不被视为等于', '


您可能想阅读文档中的warnings section

Python 不保证键值对会打印在 任何特定的顺序,所以像

这样的测试
>>> foo()
{"Hermione": "hippogryph", "Harry": "broomstick"}

很脆弱!一种解决方法是做

>>> foo() == {"Hermione": "hippogryph", "Harry": "broomstick"}
True

【讨论】:

  • 对于字典顺序问题,pprint 也是一个不错的解决方案。 from pprint import pprint as pp; pp(foo())pprint 将对键进行排序,还有助于对大型结构进行清晰易读的显示。
猜你喜欢
  • 2017-07-25
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
相关资源
最近更新 更多