Filtering nosetests by numeric range

40 Views Asked by At

All of my nosetests are of the form:

def test_555():    chk(555); do_some_testing(...)
def test_556():    chk(556); some_more_testing()

The chk() function will check to see if that test number is one that I am currently wanting to execute -- this is my own ignore-test logic based on numeric ranges. this function simply raises: unittest.SkipTest() to skip a test.

I am happy with this setup, but I would like to somehow auto decorate ALL of my tests in a way that I automatically derive the 'chk(i)' check for each test. I cannot see how to obtain the currently executing test object, during the test itself, nor how to somehow auto decorate all tests.

but maybe there is a better way? My goal to be able to update :

RUN_TESTS = (590,720)

in my source code, and have the correct thing happen

thanks!

1

There are 1 best solutions below

2
Oleksiy On BEST ANSWER

nose-parametarized is your friend:

from nose_parameterized import parameterized

def chk(number):
    print number

@parameterized.expand([[x, x] for x in range(100)])
def test(_, number):
    chk(number)

Running tests:

$ nosetests pr.py
pr.test_0 ... ok
pr.test_1 ... ok
...
pr.test_98 ... ok
pr.test_99 ... ok
----------------------------------------------------------------------
Ran 100 tests in 0.078s

OK

Selecting tests:

$ nosetests pr.py:test_89 -v -s
pr.test_89 ... 89
ok

----------------------------------------------------------------------
Ran 1 test in 0.002s

OK