3 回答

TA贡献2003条经验 获得超2个赞
您可以x
在此处访问全局范围内的变量:
self.foo = x
当您直接运行脚本时__name__
是' main ',而不是设置全局变量x
而不是construct A()
。当您导入foo
模块代码时,if
不执行。x
全局作用域和任何外部作用域中都没有变量。

TA贡献1811条经验 获得超5个赞
您的x变量是在if检查是否foo.py作为主程序运行的块内定义的,因此何时foo.py由test_foo.py,导入,x将不会被定义,因此会出现错误。
您应该x在if块外定义:
x = 96
class A():
def __init__(self):
self.foo = x
if __name__ == '__main__':
a=A()
print(a.foo)
而在test_foo.py,如果你想覆盖的价值x的foo,你应该做foo.x=37的,而不是x=37因为x否则将是一个局部变量test1。

TA贡献1785条经验 获得超8个赞
您需要将其更改为:
class A():
def __init__(self,x):
self.foo = x
并在测试中:
class TestFoo(unittest.TestCase):
def test1(self):
x=37
a=foo.A(x)
self.assertEqual(a.foo, 37)
添加回答
举报