我的所有鼻子测试都是以下形式:
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)
在我的源代码中,并且发生了正确的事情
谢谢!
答案 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