2017-10-18 73 views
0

我正在嘗試爲依賴模塊級數據(JSON文件)的程序編寫單元測試。
所以,我想我會使用setUpClass classmethod設置一個測試JSON文件,然後在測試運行後撕下它。
我遇到的問題是模塊級別JSON的設置返回了一個值,這是我還打算測試的程序的其他函數所需的值。
這裏是我的意思的例子:單元測試的setUpClass classmethod可以返回一個值,以便在其他測試中使用嗎?

import unittest 
import myProg 

class TestProg(unittest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     # initialize() creates the JSON file 
     myProg.initialize() 
     f = myProg.initialize_storage() 
     return f 

    def test_prog_func(self): 
     myProg.prog_func("test_key", "test_value", f) 

f是由我的其餘功能所需要的項目。 此代碼不起作用。我正在尋找一種方法來允許我在整個測試中使用setUpClass中的「return f」。

+2

setUpClass方法的第一個參數'cls'是類變量。保存在裏面。 'cls.f = f' –

回答

3

你不能返回任何東西,不,返回值被忽略。您可以設置類屬性,這是提供給所有的測試:

class TestProg(unittest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     # initialize() creates the JSON file 
     myProg.initialize() 
     cls.f = myProg.initialize_storage() # set a class attribute 

    def test_prog_func(self): 
     # self.f here will find the class attribute 
     myProg.prog_func("test_key", "test_value", self.f) 

這是因爲在實例屬性查找也會找到類屬性(這方法是如何發現的,畢竟)。

請注意,測試運行器將爲每個正在運行的測試創建一個新的類實例;確保實例狀態乾淨。類的狀態不會被清除,所以如果你的類屬性在測試中不再適當的測試隔離,那麼如果你改變了

相關問題