我嘗試用鼻試驗 但是當我運行下面怪異的行爲的nosetest
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)
什麼happend ???我預計運行test_case_1後,tearDown會被調用,所以self.b
是[]
。所以下一個測試用例test_case_2
,setUp
run和self.b
是[10, 20]
。
但實際上,在setUp
的值爲self.b is [10, 20, 30]
。
我不知道爲什麼。我認爲在陳述self.b = []
中肯定存在一些問題。
任何相關的指針,我猜? 我仍然沒有弄明白,但我找到了解決這個錯誤的方法。只需將self.b = []
更改爲del self.b[:]
即可。
任何人都可以幫我找出問題所在? 非常感謝。
在這種情況下的問題是不通過所有的測試。我想知道單元測試是如何工作的? – kiennt