你可以write a nose test as a generator,然后nose会运行每个函数
产生:
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