2016-10-11 20 views
3

私はPythonには初めてで、私の最初のアプリのテストを書こうとしています。私はappディレクトリでコマンドpytest中で、手動テストを実行する場合pytest "No module named"というエラーが発生しました

from main import main_func 

def test_check(): 
    assert main_func() is True 

- 得た: シンプルなアプリ構造:

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

main.pymain_func

test_main.pyが含まれていますこのエラー:

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 =========================== 

パッケージ名が正しい。また、私はPyCharm IDEを使用し、インポートパッケージのエラーを追跡しません。

さらに、私がIDEを使ってpytestテスト設定を実行すると、テストが動作しています。

+0

'tests'フォルダに空の' __init __。py'が必要です。 – 2ps

+0

私は、削除しました。ちょうど今追加された - 何も変わっていない – user1935987

+0

は魅力的に働いた –

答えて

4

pycharmプロジェクトのフォルダ構成マークのためpycharmで動作すると思います。設定でアプリケーションフォルダを「ソース」に設定した場合、pycharmはどのパスにも含めることができます。

詳細は、 https://www.jetbrains.com/help/pycharm/2016.1/configuring-folders-within-a-content-root.html

メインを含むことができないためシェルで実行されません。インクルードして実行する場合は、sysにappパスを挿入する必要があります。

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

右、私はそれをした。 pycharmで実行しても問題ありません。 probはなぜ 'pytest'コマンドで実行されないのですか – user1935987

+0

シェルでどのようにテストを実行できるのか詳細を追加しました。 – umut

+0

、理解、解決、ありがとう。 – user1935987

関連する問題