ノーズテストを generator として書くことができ、ノーズは生成された各関数を実行します:
def check_something(arg):
# some test ...
def test_something():
for arg in some_sequence:
yield (check_something, arg)
nodes-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