【发布时间】:2017-08-29 12:36:09
【问题描述】:
我有一些测试用例依赖同一个变量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。 -
测试用例(方法)不是沙盒。在
setUp中设置的变量是共享的。 -
@Siegmeyer 我没有说这些方法是沙盒的,我说 setUp 方法在每次测试之前运行。在
test_a中对self.foo的更改不会对test_b产生任何影响,因为setUp 方法将在test_b运行之前运行并再次设置self.foo。尝试运行示例 - 两个测试都通过了。 -
@Alasdair,为此道歉。我将示例简化了很多,但我提供的初始示例并未显示效果(正如您从一开始就指出的那样)。我现在只能更新代码。这次它显示了效果......
标签: django python-3.x unit-testing