ノーズテストを使おうとしていますが、以下のテストケースを実行すると
import unittest
class TestSuite(unittest.TestCase):
b = []
def setUp(self):
self.b.extend([10, 20])
def tearDown(self):
self.b = []
def test_case_1(self):
self.b.append(30)
assert len(self.b) == 3
assert self.b == [10, 20, 30]
def test_case_2(self):
self.b.append(40)
assert len(self.b) == 3
assert self.b == [10, 20, 40]
しかし、すべてのテストケースが合格するわけではありません
$> nosetest test_module.py
.F
======================================================================
FAIL: test_case_2 (test_module2.TestSuite)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/knt/test_module2.py", line 19, in test_case_2
assert len(self.b) == 3
AssertionError
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
何があったの ???test_case_1を実行した後、tearDownが呼び出されることを期待していself.b
ます[]
。したがって、次のテストケースではtest_case_2
、setUp
実行して、self.b
です[10, 20]
。
しかし実際には、のsetUp
値でself.b is [10, 20, 30]
。
どうしてか分かりません。ステートメントには問題があるに違いないと思いますself.b = []
。
何か関連するポインタだと思いますか?私はまだそれを理解していませんでしたが、私はこのバグを修正する方法を見つけました。に変更self.b = []
するだけdel self.b[:]
です。
誰かが私が問題を見つけるのを手伝ってくれる?どうもありがとう。