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)
添加回答
舉報