按数字范围过滤 nosetests

Filtering nosetests by numeric range

我所有的鼻子测试都是以下形式:

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

chk() 函数将检查该测试编号是否是我当前想要执行的编号——这是我自己基于数值范围的忽略测试逻辑。这个函数只是引发:unittest.SkipTest() 跳过测试。

我对这个设置很满意,但我想以某种方式自动装饰我的所有测试,从而自动为每个测试派生 'chk(i)' 检查。我看不到如何在测试本身期间获取当前正在执行的测试对象,也看不到如何以某种方式自动装饰所有测试。

但也许有更好的方法?我的目标是能够更新:

RUN_TESTS = (590,720)

在我的源代码中,让正确的事情发生

谢谢!

nose-parametarized是你的朋友:

from nose_parameterized import parameterized

def chk(number):
    print number

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

运行 测试:

$ 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

正在选择测试:

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

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

OK