2016-10-11 4 views
3

Я новичок в python и пытаюсь написать тест для своего первого приложения. простая структура приложения:pytest «Без модуля с именем» error

- app 
     - tests 
     __init__.py 
     - test_main.py 
     - __init__.py 
     - main.py 

main.py содержит main_func

test_main.py:

from main import main_func 

def test_check(): 
    assert main_func() is True 

Если я запустить тест вручную, с помощью команды pytest в app каталоге - есть это ошибка:

C:\Users\*****\PycharmProjects\checker3>pytest 
============================= test session starts ============================= 
platform win32 -- Python 3.5.2, pytest-3.0.3, py-1.4.31, pluggy-0.4.0 
rootdir: C:\Users\*****\PycharmProjects\app, inifile: 
collected 0 items/1 errors 

=================================== ERRORS ==================================== 
_____________________ ERROR collecting tests/test_main.py _____________________ 
ImportError while importing test module 'C:\Users\*****\PycharmProjects\app\tests\test_main.py'. 
Original error message: 
'No module named 'main'' 
Make sure your test modules/packages have valid Python names. 
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!! 
=========================== 1 error in 0.14 seconds =========================== 

имена пакетов являются правильными. Кроме того, я использую IDE PyCharm и не отслеживает ошибку пакета импорта.

Кроме того, когда я выполняю конфигурацию теста pytest с помощью IDE - тест работает.

+0

Вам нужна пустая '__init __. Py' в папке' tests'. – 2ps

+0

я был, удален. Просто добавлено сейчас - ничего не изменилось – user1935987

+0

работал как шарм –

ответ

4

Я думаю, что он работает в pycharm из-за значка конфигурации папки в проекте pycharm. Если вы установите папку приложения как «Источник» в настройках, pycharm может включать в любой путь.

Подробнее; https://www.jetbrains.com/help/pycharm/2016.1/configuring-folders-within-a-content-root.html

Он не работает в оболочке, потому что он не может включать главную. Если вы хотите включить и запустить, вы должны вставить путь приложения в sys.

import sys 
sys.path.insert(0, <app folder path>) 
+0

правый, я сделал это. нет проблемы с запуском его через pycharm. Проблема в том, почему он не запускается только через команду 'pytest' – user1935987

+0

Я добавил детали, как вы можете запустить тест в оболочке. – umut

+0

правый, понятный, решенный, спасибо. – user1935987