Почему я получаю AttributeError при выполнении модульного теста на ноутбуке Jupiter? - PullRequest
1 голос
/ 06 апреля 2019

Чтобы выполнить упражнение на ноутбуке Юпитера, мне нужно выполнить модульный тест для функции, которую я назвал city_function

def city_function(city, country):

   output = city.title() + ', ' + country.title()

   return output

Эта функция хранится в "city_functions.py",Код, выполняющий модульный тест, хранится в «test_cities2.ipynb».И я попробовал следующий код для выполнения модульного теста:

import unittest 



from city_functions import city_function


class CityCountryTestCase(unittest.TestCase):

    # Verify if city_function works



    def test_city_country_function(self):

        output = city_function('lisbon', 'portugal')

        self.assertEqual(output, 'Lisbon, Portugal')



unittest.main() 

И я получил AttributeError типа: AttributeError: module ' main ' не имеет атрибута.Что я могу сделать, чтобы решить эту проблему?

1 Ответ

1 голос
/ 08 апреля 2019

Есть хорошая статья , которая описывает вашу проблему:

Причина в том, что unittest.main смотрит на sys.argv, а первый параметр - это то, что запустило IPython или Jupyter, следовательно, ошибка о том, что файл подключения ядра не является допустимым атрибутом.Передача явного списка в unittest.main не позволит IPython и Jupyter взглянуть на sys.argv.Передача exit=False не позволит unittest.main завершить процесс Kernell

Ваша последняя строка должна выглядеть следующим образом:

unittest.main(argv=['first-arg-is-ignored'], exit=False)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...