2013-07-14 3 views
2
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'} 

строку документации это -Doctest NORMALIZE_WHITESPACE не работает

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

Почему бы не добавить пробел после 'S','? – Eric

+1

Тогда какое использование + NORMALIZE_WHITESPACE? –

ответ

6

От the docs:

Если указано, все последовательности пробельных (пробелов и переводов строк), рассматриваются как равные. Любая последовательность пробелов в пределах ожидаемых результатов будет соответствовать любой последовательности пробелов в пределах фактического выхода

',' не содержит последовательности пробелов, поэтому не рассматриваются как равная ', '.


Вы можете прочитать warnings section из документации:

Python не гарантирует, что пары ключ-значение будет напечатано в определенном порядке, так как тест

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

уязвим! Один из способов это делать

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

Для вопроса о типом заказа, '' pprint'' также является хорошим решением. '' от pprint import pprint как pp; С. (Foo()) ''. '' pprint'' будет сортировать ключи, а также помогать с легко читаемым отображением больших структур. – vaab