2016-03-31 4 views
0

これは広範な疑問です。誰もまだ解決策が見つかっていないようだから、実用的な例がもっと役立つかもしれないと思うと思います。だからここに行く:Python:複数のファイルを持つNosetests

誰もが複数のファイル/パッケージのインポートを使用してPythonプロジェクトでnosetestsを実行していますか?

私がされて何を意味、あなたのようなディレクトリの一覧持っています:

あなたmain.pyは、複数のファイルをインポートし、あなたがテストスクリプトを利用したプロジェクトファイルからnosetestsを行う
project/ 
    | 
    |____app/ 
      |___main.py 
      |___2ndFile.py 
      |___3rdFile.py 
    |____tests/ 
      |____main_tests.py 

をmain_tests.pyファイル?もしそうなら、あなたのメインファイルとmain_tests.pyファイルの両方のインポートセクションをスクリーンショットすることができますか?

これは明白な解決策で、nosetestsの主要な問題であると思われる:

+1

これは同じトピックについての2番目の質問です。私はあなたに2つの質問をしましたが、失敗の理由である可能性が高い質問には答えませんでした。あなたの質問に戻って、コメントをもう一度見てください。同じ質問を2回投稿するべきではありません。しかし、これは動作する非常に一般的なことです。 – idjaw

+0

本当に同じ話題、異なるアプローチ。 – Jeeves

答えて

2
  1. あなたがすることはできません数字で始まるPythonモジュールを持っているので、2ndFile.py3rdFile.pyは実際には動作しません(名前を変更します)。
  2. パッケージと見なすには、アプリディレクトリ内に__init__.pyが必要です。そのため追加します(空のファイルにすることもできます)。
  3. testsディレクトリに__init__.pyは必要ありません。
  4. main_tests.pyでimport文はprojectディレクトリの絶対パスがあなたのsys.pathにする必要がありますfrom app.main import blah
  5. のようになります。これを実現するには、環境変数を設定してください:export PYTHONPATH=/path/to/project

nosetestsを実行すると動作します。

+0

こんにちは、ありがとう、私は__init__.pyを削除し、示唆してreran nosetests--エラーなしでapp.mainのインポートのblahからを追加しました。しかし、今私はPythonのapp.pyを実行すると、私は、nosetests、ImportErrorのために取得していたエラーを取得しています:ex48.2ndFile – Jeeves

+0

という名前のモジュールをもう一度読んでください1. 2ndFile.pyというモジュールを持つことができません – wim

+0

ファイル名実際のディレクトリに数字で始まるものはありません。また、正確にどこにプロジェクトディレクトリの絶対パスを設定しますか? export PYTHONPATH =/path/to/project ---これは* .pyファイル内か、システム自体の環境変数ですか? – Jeeves

関連する問題