2013-11-18 6 views
14

Использование Python 2.7 Я пытаюсь проверить, что результат конкретного вызова функции не является ни одинPython doctests: тест на None

Я бы ожидать, что эти тесты пройти (извините за довольно глупый пример)

def six_or_none(val): 
    """ 
    >>> six_or_none(6) 
    6 
    >>> six_or_none(4) 
    None 
    """ 
    if val == 6: 
     return 6 
    return None 

Однако они приводят к следующему результату

Failed example: 
    six_or_none(4) 
Expected: 
    None 
Got nothing 

Что такое правильный способ проверить None в doctests?

ответ

29

Переводчик Python игнорируетNone возвращает значения, поэтому доктрины делают то же самое.

Тест на is None вместо:

>>> six_or_none(4) is None 
True 
+0

Мартейн, знаете ли вы мотивировки не обращая внимания Отсутствуют? –

+1

@EdgarAroutiounian: 'None' является значением по умолчанию« Я должен что-то возвращать », но если мне разрешили не возвращать ничего, я бы сделал это» return value. –

+0

@EdgarAroutiounian: Вы никогда не прочтёте все выходы 'None', если бы вы их отбросили. –

2

Другой вариант был бы прямой чек на None:

def six_or_none(val): 
    """ 
    >>> six_or_none(6) 
    6 
    >>> six_or_none(4) 
    """ 
    if val == 6: 
     return 6 
    return None