2011-06-01 13 views
9

Belirli bir dizine nosetests sınırlamak çalışıyorum, ancak sınama çalıştırırken ve bunu yaparken hatalar atıyor.İstenmeyen ana dizinler de dahil olmak üzere Nosetest

Burada yapılan test sırasında çıkışının temel unsurları var: Ben pbp.recipe.noserunner ile buildout kullanıyorum

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 

. Ayrıca ithalat ama hala hiçbir sevinç sınırlamak yardımcı olmak için defaults parametrelerden biri olarak where=myproject/specs ayar denedim

[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 

: Burada alakalı /projects/myproject/buildout.cfg bölüm var.

Nerede yanlış gittiğime dair herhangi bir öneriniz var mı?

Düzenleme:

Ben --exclude için üst dizinleri ama hiçbir sevinç denedim.

cevap

5

Aşağıdaki davranışı beklediğinizi varsayalım.

nose.importer: DEBUG: Add path /projects/myproject 
nose.importer: DEBUG: insert /projects/myproject into sys.path 

Neden set testleri kısıtlamak için bir --match veya --exclude desen denemiyorsunuz?

Dene:

--exclude myproject/myproject 

Ben nose.importer kaynak kodunu kontrol: burun recursivly gözlük veliler paketlerini add_path. Ben belirli bir ithalatçı oluşturmadıkça bunu geçemezsiniz düşünüyorum ... Bunun mümkün olup olmadığını bilmiyoruz burun API budur.

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

Teşekkür ederiz; Araştırmanın en iyi yolunun kaynağı okumak olduğunu fark etmeliydim! –

+1

Öyleyse, gerekli olmayan bir '__init __. Py' (veya' __init __. Pyc') olmadığından emin olun, değil mi? – Danimal

İlgili konular