您可以将鼻子测试编写为生成器,然后鼻子将运行产生的每个函数:
def check_something(arg):
# some test ...
def test_something():
for arg in some_sequence:
yield (check_something, arg)
使用nose-testconfig,您可以将测试运行次数设为命令行参数:
from testconfig import config
# ...
def test_something():
for n in range(int(config.get("runs", 1))):
yield (check_something, arg)
你会从命令行调用它,例如
$ nosetests --tc=runs:5
...不止一次运行。
或者(但也使用nose-testconfig),您可以编写一个装饰器:
from functools import wraps
from testconfig import config
def multi(fn):
@wraps(fn)
def wrapper():
for n in range(int(config.get("runs", 1))):
fn()
return wrapper
@multi
def test_something():
# some test ...
然后,如果您想将测试分成不同的组,每个组都有自己的运行次数命令行参数:
from functools import wraps
from testconfig import config
def multi(cmd_line_arg):
def wrap(fn):
@wraps(fn)
def wrapper():
for n in range(int(config.get(cmd_line_arg, 1))):
fn()
return wrapper
return wrap
@multi("foo")
def test_something():
# some test ...
@multi("bar")
def test_something_else():
# some test ...
你可以这样称呼它:
$ nosetests --tc=foo:3 --tc=bar:7