Question

I'm setting up my nosetests environment but can't seem to get the timeout to work properly. I would like to have an x second (say 2) timeout on each test discovered by nose.

I tried the following:

nosetests --processes=-1 --process-timeout=2

This works just fine but I noticed the following:

  • Parallel testing takes longer for a few simple testcases
  • Nose does not report back when a test has timed out (and thus failed)

Does anyone know how I can get such a timeout to work? I would prefer it to work without parallel testing but this would not be an issue as long as I get the feedback that a test has timed out.

Was it helpful?

Solution

I do not know if this will make your life easier, but there is a similar functionality in nose.tools that will fail on timeout, and you do not have to have parallel testing for it:

from nose.tools import timed

@timed(2)
def test_a():
    sleep(3)

You can probably auto decorate all your tests in a module using a script/plugin, if manually adding an attribute is an issue, but I personally prefer clarity over magic.

By looking through the Lib/site-packages/nose/plugins/multiprocess.py source it looks like process-timeout option that you are using is somewhat specific to managing "hanging" subprocesses that may be preventing test from completion.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top