Почему валится unittest тест? AttributeError: module '__main__' has no attribute 'true'

RVG

Имеется модуль под названием unit, в нем определена функция def get_formated

def get_formated(first, midle, last=''): if last: full_name=first+' ' + midle + ' ' + last else: full_name=first+' '+last return full_name.title()

Сам тест в модуле testirovanie

from unit import get_formated
import unittest
class UTestFigny(unittest.TestCase): def test_ingfigny(self): fomatedName=get_formated('жаклин','кенеди',) self.assertEqual(fomatedName,'Жаклин Кенеди')
unittest.main()

Тест фейлится с сообщениями

EE
======================================================================
ERROR: testirovanie (unittest.loader._FailedTest)
----------------------------------------------------------------------
AttributeError: module '__main__' has no attribute 'testirovanie'
======================================================================
ERROR: true (unittest.loader._FailedTest)
----------------------------------------------------------------------
AttributeError: module '__main__' has no attribute 'true'

Не могу понять причину.

Используется Питон 3.5.

1 ответ

RVG

В testirovanie должно быть

if __name__ == '__main__': unittest.main()

__name__ может принимать два значения в зависимости от ситуации. Если модуль импортируется, то оно равно имени модуля. Если модуль исполняется напрямую, оно равно __main__.

У меня в IDLE (стандартная базовая IDE от python) приведенный Вами код работает. В более же навороченной сторонней IDE выдает похожие Вашим ошибки. Очевидно, некоторые IDE по-своему обрабатывают файлы и требуют дополнительных уточнений в коде.

Кроме того, именно такая конструкция предлагается официально.

licensed under cc by-sa 3.0 with attribution.