您可以write a nose test as a generator和鼻子會再運行每個功能 產生:
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
...多於一次運行。
或者(但也使用鼻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
如果你說明你爲什麼要這樣做,這可能會有所幫助。另外,'n'是否有所不同?如果是這樣,你想如何指定它? (例如,在運行測試時在命令行中)爲什麼沒有Bash?這對於這項工作似乎是完美的。 –
我擴展了這個問題的基本原理。 – JohnJ