Проблема с упражнением по модульному тестированию, модуль не найден

#python #pytest

Вопрос:

Я застрял на упражнении. Это файлы, которые мне дали:

Файл для чтения:

Прежде чем начать, убедитесь, что вы выполнили эту команду в своем терминале, чтобы установить pytest:

 pip install -U pytest
 

Затем, чтобы запустить pytest, просто введите:

 pytest
 

Прямо сейчас не все тесты должны пройти. Исправьте функцию, чтобы она прошла все свои тесты! Как только все ваши тесты пройдут, попробуйте написать несколько собственных дополнительных модульных тестов!

А «compute-launch.py» файл:

 def days_until_launch(current_day, launch_day):
    """"Returns the days left before launch.
    
    current_day (int) - current day in integer
    launch_day (int) - launch day in integer
    """
    return launch_day - current_day
 

А «test-compute-launch.py» файл:

 from compute_launch import days_until_launch

def test_days_until_launch_4():
    assert(days_until_launch(22, 26) == 4)

def test_days_until_launch_0():
    assert(days_until_launch(253, 253) == 0)

def test_days_until_launch_0_negative():
    assert(days_until_launch(83, 64) == 0)
    
def test_days_until_launch_1():
    assert(days_until_launch(9, 10) == 1)
 

Это моя проблема:
ModuleNotFoundError: Нет модуля с именем «compute_launch»

Я пробовал просматривать другие потоки переполнения стека, которые содержат ту же ошибку «без имени модуля», но я не смог понять, как можно исправить эту проблему. Я установил pytest. Мне нужно иметь возможность запускать тесты, чтобы я мог видеть, какие тесты работают, а какие нет. Мне не нужна помощь в исправлении или написании модульных тестов, мне нужна только помощь в том, как запустить файл для выполнения модульных тестов.

Спасибо.

Ответ №1:

Вы сохранили файл как compute-launch.py , но импортируете функцию из compute_launch .
Обратите внимание, что в одном есть дефис, а в другом-подчеркивание.

Ответ №2:

Имя файла, которое вы использовали, неверно. Как указано в ОПТОСОЗ 8:

Имена пакетов и модулей

Модули должны иметь короткие имена в нижнем регистре. Подчеркивания можно использовать в имени модуля, если это улучшает читаемость. Пакеты Python также должны иметь короткие имена в нижнем регистре, хотя использование символов подчеркивания не рекомендуется.

Вам нужно переименовать файл и удалить тире. Так что измените его с:

 compute-launch.py
 

Для:

 compute_launch.py
 

То же самое с вашим тестовым файлом test-compute-launch.py . Импорт должен оставаться прежним:

 from compute_launch import days_until_launch