我试图将鼻子测试限制到特定目录,但是在测试运行期间,它包括我要定位的目录的父目录,这样做会引发错误。
以下是测试运行输出的关键要素:
nose.importer: DEBUG: Add path /projects/myproject/myproject/specs
nose.importer: DEBUG: Add path /projects/myproject/myproject
nose.importer: DEBUG: Add path /projects/myproject
nose.importer: DEBUG: insert /projects/myproject into sys.path
我在用着buildout
with pbp.recipe.noserunner
。这是相关的/projects/myproject/buildout.cfg
部分:
[specs]
recipe = pbp.recipe.noserunner
eggs =
pbp.recipe.noserunner
${buildout:eggs}
figleaf
pinocchio
working-directory =
myproject/specs
defaults =
-vvv
--exe
--include ^(it|ensure|must|should|specs?|examples?)
--include (specs?(.py)?|examples?(.py)?)$
--with-spec
--spec-color
我也尝试过设置where=myproject/specs
作为其中之一defaults
参数帮助限制导入但仍然不高兴。
对我哪里出错有什么建议吗?
Edit:
我尝试过--exclude
父目录但没有乐趣。
我想您正在期待以下行为。
nose.importer: DEBUG: Add path /projects/myproject
nose.importer: DEBUG: insert /projects/myproject into sys.path
为什么不尝试一下--match
or an --exclude
限制测试集的模式?
Try:
--exclude myproject/myproject
我检查了nose.importer的源代码:nose递归地add_path规范的父包。
我认为除非你创建一个特定的导入器,否则你无法绕过这个......
我不知道鼻子 API 是否可能。
def add_path(path, config=None):
"""Ensure that the path, or the root of the current package (if
path is in a package), is in sys.path.
"""
# FIXME add any src-looking dirs seen too... need to get config for that
log.debug('Add path %s' % path)
if not path:
return []
added = []
parent = os.path.dirname(path)
if (parent
and os.path.exists(os.path.join(path, '__init__.py'))):
added.extend(add_path(parent, config))
elif not path in sys.path:
log.debug("insert %s into sys.path", path)
sys.path.insert(0, path)
added.append(path)
if config and config.srcDirs:
for dirname in config.srcDirs:
dirpath = os.path.join(path, dirname)
if os.path.isdir(dirpath):
sys.path.insert(0, dirpath)
added.append(dirpath)
return added
def remove_path(path):
log.debug('Remove path %s' % path)
if path in sys.path:
sys.path.remove(path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)