Я думаю, что то, что я пытаюсь сделать, довольно просто. Я хочу инициализировать пару переменных в функции тестовой установки, а затем использовать их в тестовых функциях, которые украшены этой настройкой. Следующий тривиальный пример иллюстрирует, что я имею в виду:
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)
Со старым стилем unittest я мог бы установить их как переменные экземпляра в тестовом классе, но я думал, что nosetests не требует, чтобы вы использовали классы. Я также рассматривал их как глобальные переменные пакета, но это не кажется ужасно хорошей практикой. Я надеюсь, что что-то очевидное мне не хватает для этого.
Заранее благодарим за помощь.