2017-02-14 87 views
1

當我嘗試使用setUpClass方法,給出了_cleanups屬性的錯誤沒有出現在下面的代碼Python的單元測試嘲諷的主要功能

@classmethod 
    def setUpClass(self): 
     self.argv = ['installation_tool.py'] 
     argv_patcher = patch.object(sys, 'argv', self.argv) 
     self.addCleanup(self, argv_patcher.stop) 
     self.argv_mock = argv_patcher.start() 
     self.all_bears = get_all_bears_names_from_PyPI() 

但是,當我使用安裝程序的方法,它工作得很好,我可以在其他方法中添加像self.argv + = [asd,asda,asd]這樣的參數。

def setUp(self): 
     self.argv = ['installation_tool.py'] 
     argv_patcher = patch.object(sys, 'argv', self.argv) 
     self.addCleanup(argv_patcher.stop) 
     self.argv_mock = argv_patcher.start() 
     self.all_bears = get_all_bears_names_from_PyPI() 

我想在這裏測試主要功能,所以我需要嘲笑完成。我還能如何測試主要功能?

我該如何使用setUpClass來做到這一點,因爲我需要爲其他方法使用setUp方法,因爲他們有自己的啓動調用?

回答

0

您正在將'self'傳遞給setUpClass(這是一個類方法)而不是'cls'。你不能在類方法中使用self。如果你需要使用setUp(實例方法),也許你可以在不同的測試用例中分開你的測試(因爲每個測試用例都可以有它自己的setUp方法)並且用你寫的setUp運行測試,這是正確的。同樣適用於setUpClass。所以當你需要定義不同的setUp方法時,你可能想要分割測試用例。