py.test和norecursedirs granuarity

时间:2012-09-27 11:41:28

标签: python pytest

我有这些目录:

./Tools
./ook/Tools.

我已将Tools添加到norecursedirs中py.test的setup.cfg选项中。正如预期的那样,当py.test收集测试时,./Tools没有被探索。但是,./ook/Tools都不是,这是一个问题,因为我想要这个。

知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

norecursedirs的值是一个glob模式,为了使它在完整路径上匹配,你的模式必须包含一个/字符。不幸的是,匹配的完整路径是绝对路径,因此如果您只需要基本工具,则必须包含父目录名称:

$ find root/
root/
root/Tools
root/Tools/test_foo.py
root/Tools/__init__.py
root/setup.cfg
root/ook
root/ook/Tools
root/ook/Tools/test_foo.py
root/ook/__init__.py
$ cat root/setup.cfg
[pytest]
norecursedirs = root/Tools
$ py.test --collectonly root/
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.1
collected 1 items 
<Module 'root/ook/Tools/test_foo.py'>
  <Function 'test_foo'>

===============================  in 0.01 seconds ===============================