为 Nose 的导入路径提供基本目录
Provide base directory for import paths to Nose
在我的项目中,有一个子目录包含我想要进行单元测试的 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
来测试它。
但是,当从主项目目录 运行ning nosetests ./python-app/sometool/test
时,导入失败,因为 my-project
现在是导入的基本目录,即从那里找不到 sometool.bar.bbb
。
如果我先 cd
进入 python-app
并从那里进入 运行 nosetests ./sometool/test
,一切都会按预期进行。
但是我想使用快捷方式将 Visual Studio 代码配置为 运行 这些测试,并且这些命令似乎总是从项目根目录执行。
有没有办法将 "base directory" 作为参数传递给 Nose?
您可以在 nosetests 环境中使用上下文提供模块:
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
这应该使 nosetests 总能找到 python 应用程序,无论它在哪里执行。
在我的项目中,有一个子目录包含我想要进行单元测试的 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
来测试它。
但是,当从主项目目录 运行ning nosetests ./python-app/sometool/test
时,导入失败,因为 my-project
现在是导入的基本目录,即从那里找不到 sometool.bar.bbb
。
如果我先 cd
进入 python-app
并从那里进入 运行 nosetests ./sometool/test
,一切都会按预期进行。
但是我想使用快捷方式将 Visual Studio 代码配置为 运行 这些测试,并且这些命令似乎总是从项目根目录执行。
有没有办法将 "base directory" 作为参数传递给 Nose?
您可以在 nosetests 环境中使用上下文提供模块:
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
这应该使 nosetests 总能找到 python 应用程序,无论它在哪里执行。