私は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.py
とscript2.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)
workspace
がc:/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
ファイルを削除して固定あなた
ファイル 'base \ __ init __。py'を削除するとどうなりますか? –
実際には、baseはパッケージでなければならないので、これは可能ではありません。これは、名前が示すように、他のスクリプトで使用される基本クラスを含んでいるためです。むしろテストクラス(script1.pyとscript2.py)を別のディレクトリ(__init__.pyなし)にconftestと一緒に動かすことを考えています。 – user1967718