2015-08-21 32 views
2

我有一組單元測試看起來基本上是這樣的:爲什麼python只在我的TestCase中運行一個test_method?

import unittest 

class MyTestCase(unittest.TestCase): 

    def test_one(self): 
     self.assertEqual(1,1) 

    def test_two(self): 
     self.assertEqual(2,2) 


if __name__ == '__main__': 
    unittest.main() 

當我運行測試,我希望看到來自test_methods(test_one和test_two)的結果,但我只得到一個結果:

$ python -m unittest -v tests.test_dummy 
test_one (tests.test_dummy.MyTestCase) ... ok 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 

這是怎麼回事?

+0

您正在使用哪個python版本? –

+0

的Python 2.7.6 (本文加入使我的評論足夠長的時間。) – Abe

+0

不能複製,工作在pycharm和命令行運行時 –

回答

0

哦,這是令人懊惱的。

這是一個縮進問題。測試文件包含製表符和空格的組合,因此第二個測試未被識別。

我將從我的真實代碼中看不到的毛刺複製到我用來複制錯誤的簡化的MyTestCase類。但是,stackoverflow剝離了標籤,所以沒有人能夠複製。

這是殺死我的代碼的錯誤。標籤用連字符顯示:----

import unittest 

class MyTestCase(unittest.TestCase): 

    def test_one(self): 
     self.assertEqual(1,1) 

----def test_two(self): 
--------self.assertEqual(2,2) 


if __name__ == '__main__': 
    unittest.main() 
+0

你應該得到一個合適的文本編輯器(如Notepad ++或Sublime),它們處理製表符/空格混合代碼。這是唯一的理智選擇。 –

+0

我使用的是Sublime 2,這也是我爲什麼如此驚訝的原因之一。 – Abe

+0

這真的很奇怪。你有沒有改變任何設置?您的文件是否保存爲* .py *? –

相關問題