use*_*718 5 python importerror pytest
一般来说,我对pytest和创建包(模块)都很陌生.我用pytest写了一些测试,直到我重构了脚本结构.这实际上是必要的,因为有很多脚本,它的定位非常混乱.当前目录结构看起来像这样:
C:\Users\local\workspace
.+---tools
+---base
+---__init__.py
+---conftest.py
+---script1.py
+---script2.py
+---misc
+---__init__.py
+---run.py
+---__init__.py
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
哪里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
Run Code Online (Sandbox Code Playgroud)
我真的不知道,如何解决这个问题.当所有脚本都在同一个文件夹中(并且没有__init__.py)时,一切正常.其他脚本工作正常(我的意思是依赖,其中一些脚本需要来自其他目录的模块),只是pytest失败了.
奇怪的是,在Linux发行版上,这很好用.我猜Windows路径存在问题,这似乎是pytest的一个真正问题.你有任何想法如何解决这个问题吗?
谢谢