[TIP] How do I get nose to add the cwd to sys.path?

holger krekel holger at merlinux.eu
Sat Nov 15 19:35:28 PST 2008


Hi Jason, all,

On Sat, Nov 15, 2008 at 13:52 -0500, jason pellerin wrote:
> On Fri, Nov 14, 2008 at 6:42 PM, Kumar McMillan
> <kumar.mcmillan at gmail.com> wrote:
> > On Thu, Nov 13, 2008 at 4:27 PM, Daryl Spitzer <daryl.spitzer at gmail.com> wrote:
> >> Here's what the directory structure looks like:
> 
> >> I'm running `nosetests` from the foo directory.
> 
> [ and 'import bar' doesn't work ]
> 
> > I'd suggest bringing this up.  I'm curious what Jason's explanation is.
> 
> Basically, python says that absolute imports are preferred, and if you
> run nosetests from inside a package (which is not really the right
> thing to do anyway) they won't work unless nose figures out that it's
> inside of that package and adds the package root to sys.path. I guess
> it would be possible to also add cwd in that case -- it hasn't been
> done that way so far because nobody has asked for it, and I don't use
> relative imports or run nose inside of packages myself. ;)

For larger test suites i find it practical to do structures like 

    mypkg/
        subdir1/
            mod1.py 
            testing/...
        subdir2/
            testing/...

and run tests while modifying codes in subdirs.  E.g. In projects 
like pypy with some >10000 tests i often want to run tests 
in subdirectories and find this very useful.

FWIW, i think nosetests and py.test adding the pkg root 
to sys.path is quite enough, adding CWD would cause confusion
easily. 

holger

-- 
collaborative expert contracting: http://merlinux.eu 
PyPy  Python/Compiler tool chain: http://codespeak.net/pypy 
pylib py.test/greenlets/svn APIs: http://pylib.org 



More information about the testing-in-python mailing list