私がやろうとしていることはかなり単純だと思います。テストセットアップ関数でいくつかの変数を初期化し、そのセットアップで装飾されたテスト関数でそれらを使用したいと思います。次の簡単な例は、私が何を意味するかを示しています。
from nose.tools import *
def setup():
foo = 10
def teardown():
foo = None
@with_setup(setup, teardown)
def test_foo_value():
assert_equal(foo, 10)
これにより、次のようになります。
$ nosetests tests/test_foo.py
E
======================================================================
ERROR: test_foo.test_foo_value
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/mtozzi/.virtualenvs/foo/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/home/mtozzi/code/foo/tests/test_foo.py", line 12, in test_foo_value
assert_equal(foo, 10)
NameError: global name 'foo' is not defined
----------------------------------------------------------------------
Ran 1 test in 0.006s
FAILED (errors=1)
古い単体テストスタイルでは、これらをテストクラスのインスタンス変数として設定できましたが、nosetestsではクラスを使用する必要はないと思いました。それらをパッケージグローバル変数として設定することも検討しましたが、それはひどく良い習慣ではないようです。これを行うために私が見逃している明らかな何かがあることを願っています。