我有一个这样的程序
class A():
def __init__(self):
self.foo = x
if __name__ == '__main__':
x = 96
a=A()
print(a.foo)
当它从 shell “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()
当我从 shell 运行这个 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)
所以我的问题是,是否可以从 test_foo.py 测试 foo.py,设置 x 并看到它在类 A 中使用。 f 而不改变 foo.py 程序
显然,这是一个真实程序的简化版本
我用 python 3.6 和 2.7 得到相同的结果
我曾尝试使用 的各种组合,global但没有找到使用它的方法
湖上湖
四季花海
慕的地10843
相关分类