在我的项目中,有一个子目录,其中包含我要进行单元测试的python应用程序。结构如下:
my-project/
python-app/
sometool/
__init__.py
foo/
__init__.py
aaa.py
bar/
__init__.py
bbb.py
test/
sometool-tests/
foo-tests/
aaa_test.py
现在,aaa.py
包含像这样的导入import sometool.bar.bbb
,它假定应用程序的基本目录为python-app
,这在我的构建设置中确实如此。
aaa_test.py
显然是aaa
为了测试而导入。但是,nosetests ./python-app/sometool/test
从主项目目录运行时,导入失败,因为my-project
现在是导入的基本目录,即sometool.bar.bbb
从那里找不到。
如果我先cd
进入那里,一切都会按预期进行。但是我想将Visual Studio Code配置为使用快捷方式运行那些测试,并且这些命令似乎总是从项目根目录执行。python-app
nosetests ./sometool/test
有没有办法将“基本目录”作为参数传递给Nose?
您可以在鼻子测试环境中使用上下文提供模块:
my-project/
python-app/
...
test/
context.py
context.py:
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import python-app
然后,您可以python-app
从上下文模块中导入测试,例如aaa_test.py
:
from tests.context import python-app
from python-app.sometool import foo, bar
不管执行在哪里,这都应该使鼻子测试始终能够找到python应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句