2016-12-19 120 views
2

我希望有人不介意解釋這裏發生了什麼。我試圖運行一個已被證實使用python 2.7工作的python unittest。但是,當試圖在運行python 2.6的機器上運行這個相同的測試時,我得到了一個我無法弄清楚的錯誤。這是發生了什麼事Python單元測試類變量

import re, string, os, subprocess, unittest 
import MERCH_FUNCTIONS 


class merchTests(unittest.TestCase): 
    @classmethod 
    def setUpClass(self): 
     self._merchFileString=open("test_file.txt",'r').read() 
     self._merchFileList=self._merchFileString.split("\n") #convert string to list 

    def test_stuff(self): 
     #print list 
     print(self._merchFileList) 
if __name__ == '__main__': 
    unittest.main() 

出於某種原因,如果我跑使用Python 2.7的代碼成功運行測試的一個例子,這樣的例子self._merchFileList打印出來。

但是,與Python 2.6運行相同的代碼時,我收到以下錯誤(S):

====================================================================== 
ERROR: test_stuff (__main__.merchTests) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "MERCH_Test_Case.py", line 14, in test_stuff 
    print(self._merchFileList) 
AttributeError: 'merchTests' object has no attribute '_merchFileList' 

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

FAILED (errors=1) 

我不能爲我的生活弄清楚是怎麼回事。我嘗試了幾件不同的事情,但沒有成功。如果有人願意解釋發生了什麼問題,我將不勝感激。

預先感謝您。

回答

6

setUpClassintroduced in python2.7。因此,當您使用早期版本(例如Python 2.6)運行它時,它不會被自動調用。

+1

嘎,謝謝先生!解決方案使用「SetUp」而不是「SetUpClass」。 –

+0

@Dr。你熟悉SetUp和SetUpClass的區別嗎? –

+0

我不完全清楚它。一個是子類方法,另一個是類方法,對嗎?你可以解釋嗎? –