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)
添加回答
举报
