У меня есть такая программа
class A():
def __init__(self):
self.foo = x
if __name__ == '__main__':
x = 96
a=A()
print(a.foo)
Когда она запускается из оболочки "python foo.py", она печатает 96
У меня также есть test_foo.py
import foo
import unittest
class TestFoo(unittest.TestCase):
def test1(self):
x=37
a=foo.A()
self.assertEqual(a.foo, 37)
if __name__ == '__main__':
unittest.main()
Когда я запускаю этот test_foo.py из оболочки, я получаю
$ python test_foo.py
E
======================================================================
ERROR: test1 (__main__.TestFoo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_foo.py", line 8, in test1
a=foo.A()
File "/home/zzz/foo.py", line 3, in __init__
self.foo = x
NameError: global name 'x' is not defined
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
Так что мой вопрос: можно ли проверить foo.py из test_foo.py, чтобы установить x и увидеть его?используется в классе A. f Без изменения программы foo.py
Очевидно, это упрощенная версия реальной программы
Я получаю те же результаты с Python 3.6 и 2.7
Я пытался использовать различные комбинации global
, но не нашел способа использовать это