Я пытаюсь выполнить тестовый пример для проекта, над которым я работаю. Раньше я успешно выполнял модульные тесты, но теперь это ошибка. Я точно знаю, что никаких обновлений каких-либо библиотек или изменений в Пути не было. Я попытался посмотреть исходный код и выяснить, почему он выдает ошибку, но пока не повезло. Любая помощь в этом будет оценена по достоинству.
Версия Python — 3.7.1
Пример кода ниже
import unittest
class MyTestCase(unittest.TestCase):
def test_dummy(self):
self.assertEqual(2+2,4)
Я использовал следующую команду в cmd для выполнения теста.
C:\Users\Yadada\Desktop\repo\mwe\mwe>python -m unittest tests\test_file.py
Моя структура папок
MWE -|
|_tests - |
|_test_file.py
Ожидаемый результат — успешное выполнение теста, поскольку он простой. Но в итоге я получаю следующую ошибку
strclass
ERROR: test_file (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_file
Traceback (most recent call last):
File "C:\Users\yadada\AppData\Local\Continuum\anaconda3\lib\unittest\loader.py", line 156, in loadTestsFromName
module = __import__(module_name)
ModuleNotFoundError: No module named 'tests.test_file'
----------------------------------------------------------------------
Ran 1 test in 0.001s
Нет, у меня никогда раньше не было файла __init.py__ в том же каталоге tests, но тесты работали нормально.
@aws_apprentice — я поместил пустой __init__.py файл в папку с тестами, и на удивление модульный тест теперь работает. Интересно, почему? Не могли бы вы дать краткое объяснение этому поведению, если бы могли? Если вы опубликуете это как ответ, я приму это. Спасибо
У меня тоже есть эта ошибка, __init__.py - это не требуется в Python 3.3+, если вам не нужно запускать скрипт установки в этом каталоге






Проблема была решена после помещения пустого файла __init__.py в папку с тестами.
Для лучшего объяснения того, почему это сработало, обратитесь к Для чего нужен __init__.py?.
Спасибо, @aws_apprentice за помощь.
Я получаю эту ошибку в действиях github, но не локально, и это не решило ее для меня.
В PyCharm 2020.2 ошибка «ModuleNotFoundError: No module named» также может возникать при запуске модульного теста в подпапке, которая импортирует модуль из тестируемой родительской папки. PyCharm по умолчанию использует путь сценария для выполнения теста, который не работает, например. с этой ошибкой:
ModuleNotFoundError: No module named '/home/foobar/projects/foo/mypythonproject/moduleundertest'
Решение состоит в том, чтобы отредактировать запустить конфигурацию модульного теста и изменить цель модульных тестов с «Путь сценария» на «Имя модуля».
Решение для меня состояло в том, чтобы добавить:
if __name__ == '__main__':
unittest.main()
в конец моего тестового файла.
Затем я смог запустить:
python -m <test-file>
Также потребовалось удалить суффикс .py из моей команды python -m:
Подробнее см. в этот ответ.
у вас есть файл
__init__.pyв каталогеtests, чтобы сделать их доступными для обнаружения как часть модуля?