按数值范围过滤nosetests

时间:2015-10-31 16:53:00

标签: python nosetests

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

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)

在我的源代码中,并且发生了正确的事情

谢谢!

1 个答案:

答案 0 :(得分:1)

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