2015-10-30 8 views
5

私はpytestとパッケージ(モジュール)を作成するのはかなり新しいです。私はpytestで書かれたいくつかのテストを持っていましたが、スクリプトの構造をリファクタリングするまでうまくいきました。これは実際には必要なものでした。なぜなら、多くのスクリプトがあり、オリエンテーションにはかなり混乱していたからです。現在のディレクトリ構造はこのようになります。Windows上でconftest.pyをインポートできません

C:\Users\local\workspace 
     .+---tools 
      +---base 
       +---__init__.py 
       +---conftest.py 
       +---script1.py 
       +---script2.py 
      +---misc 
       +---__init__.py 
       +---run.py 
      +---__init__.py 

script1.pyscript2.pyテストのためのいくつかのクラスと特別なクラスが含まれます。私はconftest.pyがトップレベルのテストファイルと同じフォルダに置かれているはずだと言いましたので、baseディレクトリに入れてください。

私は、以下の方法によりrun.pyからpytestを実行します。

pytest_args = workspace + "/tools/base/script1.py " 
pytest_args += workspace + "/tools/base/script2.py" 
pytest.main(pytest_args) 

workspacec:/Users/local/workspaceが含まれています。私はこのエラーを受け取ります:

Traceback (most recent call last): 
    File "c:\Python27\Lib\_pytest\config.py", line 543, in importconftest 
    mod = conftestpath.pyimport() 
    File "c:\Python27\Lib\py\_path\local.py", line 660, in pyimport 
    raise self.ImportMismatchError(modname, modfile, self) 
ImportMismatchError: ('tools.base.conftest', 'c:/Users/local/workspace\\jenkins\\tools\\base\\conftest.py', local('c:\\Users\\wokspace\\tools\\base\\conftest.py')) 
ERROR: could not load c:\Users\local\workspace\tools\base\conftest.py 

私は本当にこれを修正する方法を知りません。すべてのスクリプトが同じフォルダ内にあっても(そして__init__.pyなし)、すべて正常に機能しました。他のスクリプトはうまく動作します(私は、いくつかのスクリプトが別のディレクトリのモジュールを必要とするところのdepenciesを意味します)、pytestは失敗します。

奇妙なのは、Linuxディストリビューションではうまくいきます。私はpytestのための本当の問題であるように見えるWindowsのパスに問題があると思う。 これを解決する方法はありますか?

は、私は同様の問題に遭遇し、そして何が最終的にそれはすべて私の__pycache__ディレクトリと.pycファイルを削除して固定あなた

+0

ファイル 'base \ __ init __。py'を削除するとどうなりますか? –

+0

実際には、baseはパッケージでなければならないので、これは可能ではありません。これは、名前が示すように、他のスクリプトで使用される基本クラスを含んでいるためです。むしろテストクラス(script1.pyとscript2.py)を別のディレクトリ(__init__.pyなし)にconftestと一緒に動かすことを考えています。 – user1967718

答えて

0

ありがとうございます。

関連する問題