doctest Ничего не ожидал

Меня смущает эта проблема с doctest.

from collections import namedtuple
Match = namedtuple('Match', ['token_string', 'normalised_token',
                     'brand_name', 'brand_id',
                     'score'])

def make_match(tokens, normalised, brand, score):
    """
    Examples:
    >>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
    >>> True 
    >>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==('Jack Jones','JackJones','Jack Jones','X023',0.6)
    >>> True
    """
    return Match(token_string=tokens,
         normalised_token=normalised,
         brand_name=brand[0],
         brand_id=brand[1],
         score=score)

И тогда я получил отказ от теста, как это:

Failed example:
make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
Expected nothing
Got:
True
**********************************************************************
File "utilization.py", line 15, in utilization.make_match
Failed example:
True 
Expected nothing
Got:
True
**********************************************************************
1 items had failures:
4 of   4 in utilization.make_match
***Test Failed*** 4 failures.

Это странно. Разве я не должен был уже объявить, что ожидаю "True"?

Большое спасибо


person Hello lad    schedule 28.07.2014    source источник
comment
похоже, вы провалили какой-то тест. можешь добавить код теста? Я думаю, что тест ничего не ожидает, пока этот оператор возвращает True   -  person Elisha    schedule 28.07.2014
comment
@Элиша, это doctest; тестовый код находится в строке документации.   -  person jonrsharpe    schedule 28.07.2014


Ответы (1)


Форматирование вашего тестового примера неверно, оно не соответствует тому, что вы увидите в интерпретаторе. Например, вместо:

>>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
>>> True 

Вы должны иметь:

>>> make_match('Jack Jones','JackJones',('Jack Jones','X023'),0.6)==Match('Jack Jones','JackJones','Jack Jones','X023',0.6)
True 

Обратите внимание, что >>> отсутствует для вывода. По этой же причине вы видите четыре теста вместо двух, которых ожидали; True был интерпретирован как новый тест, а не как ожидаемый результат предыдущего теста.

person jonrsharpe    schedule 28.07.2014