Я запускаю тесты с носом и хотел бы использовать переменную из одного элемента тестов в другом. Для этого я создаю переменную при настройке класса. Мне кажется, что переменная копируется для каждого элемента, поэтому та, что в классе, остается фактически нетронутой. Если вместо простой переменной я использую список, я вижу поведение, которое и ожидал.
Я написал небольшой пример, мы можем наблюдать, что var1
и varg
всегда показывают одно и то же значение при входе в тест:
import time
import sys
import logging
logger = logging.getLogger('008')
class Test008:
varg = None
@classmethod
def setup_class(cls):
logger.info('* setup class')
cls.var1 = None
cls.list1 = []
def setup(self):
logger.info('\r\n* setup')
logger.info('\t var1: {}, varg: {}, list: {}'.format(
self.var1, self.varg, self.list1))
def teardown(self):
logger.info('* teardown')
logger.info('\t var1: {}, varg: {}, list: {}'.format(
self.var1, self.varg, self.list1))
def test_000(self):
self.var1 = 0
self.varg = 0
self.list1.append(0)
pass
def test_001(self):
# Here I would like to access the variables but they still show 'None'
self.var1 = 1
self.varg = 1
self.list1.append(1)
pass
@classmethod
def teardown_class(self):
logger.info('* teardown class')
Результат:
nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
* setup class
008_TestVars.Test008.test_000 ...
* setup
var1: None, varg: None, list: []
* teardown
var1: 0, varg: 0, list: [0]
ok
008_TestVars.Test008.test_001 ...
* setup
var1: None, varg: None, list: [0]
* teardown
var1: 1, varg: 1, list: [0, 1]
ok
* teardown class
----------------------------------------------------------------------
Есть ли способ перенести значения var1
и varg
из одного теста в другой?