2012-09-27 20 views
2

我有以下目錄:py.test和norecursedirs granuarity

./Tools 
./ook/Tools. 

我在setup.cfg添加Tools到py.test的norecursedirs選項。正如預期的那樣,當py.test收集測試時,./Tools未被探索。但是,既不是./ook/Tools,這是一個問題,因爲我這一個。

任何想法如何實現這一目標?

回答

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 =============================== 
+0

+1。感謝您提供清晰有用的答案。 – Sardathrion