我有一些測試用例依賴於同一變量foo
爲單位不變的變量測試
from unittest import TestCase
# actually FOO is imported because it is quite big
FOO = {'key_a': 'aaa', 'key_b': 'bbb'}
class TestFoo(TestCase):
def setUp(self):
self.foo = FOO
def test_a(self):
self.foo['key_a'] = 'ccc'
self.assertEqual(self.foo['key_a'], 'ccc')
def test_b(self):
self.assertEqual(self.foo['key_a'], 'aaa')
我的問題是,一旦我在test_a
值更改爲
self.foo['key_a'] = 'ccc'
值對於所有後續測試,「保持」這種方式。在test_b
斷言失敗的原因爲self.foo['key_a']
值保持在'ccc'
我怎麼有寫測試用例所以self.foo
是在所有測試{'key_a': 'aaa', 'key_b': 'bbb'}
?
我不認爲你的例子演示了你的問題。 'self.foo'在'setUp'方法設置的每次測試之前,所以在'test_a'變化應該不會影響'test_b'。 – Alasdair
測試用例(方法)不是砂箱。 'setUp'中設置的變量是共享的。 – Siegmeyer
@Siegmeyer我沒有說的方法是沙盒,我說,設置方法每個測試之前運行。更改'self.foo'在'test_a'不會對'test_b'任何影響,因爲安裝方法將前'test_b'運行運行,並設置'self.foo'一次。嘗試運行示例 - 兩個測試都通過。 – Alasdair