У меня проблемы с изменением переменных объекта в методе класса.Пример:
import unittest
class Example(unittest.TestCase):
def setUp(self):
self.var_A = "foo"
def test_1(self):
self.assertEqual(self.var_A, "foo")
self.var_A = "bar"
def test_2(self):
self.assertEqual(self.var_A, "bar")
if __name__ == '__main__':
unittest.main()
test_2 завершается ошибкой, поскольку self.var_A
значение не было изменено на "bar" в test_1
Если я пытаюсьпоместите его снаружи setUp
и измените его с помощью self.__class__.var_A
, он работает.
Рабочий пример:
import unittest
class Example(unittest.TestCase):
var_A = "foo"
def setUp(self):
pass
def test_1(self):
self.assertEqual(self.var_A, "foo")
self.__class__.var_A = "bar"
def test_2(self):
self.assertEqual(self.var_A, "bar")
if __name__ == '__main__':
unittest.main()
Вопрос: Почему работает второй пример, а первый - нет?'t?
Это сбивает с толку, поскольку кажется, что self.var_A
является неизменным и не может быть изменено после setUp , но я могу использовать его как часть объекта в других методах тестирования