2017-09-04 98 views
2

我想對我的(python)程序的一個特性進行一些測試,這個測試的計算量非常大。我可以運行代碼,將輸出存儲在pandas.DataFrame中,醃製df並與我的軟件包一起分發,以便用戶可以運行測試。但我認爲這與單元測試的原則背道而馳,即測試應獨立於外部來源和自我包含。是否有可能將python pickle對象作爲字符串存儲在類中?

另一種想法是如果我將pickle文件作爲字符串存儲在可導入的python類中,然後動態編寫pickle文件並在測試後清理它。這有可能做到,如果有,我該怎麼做?

下面是一小段代碼,它簡單地在當前工作目錄中寫入dfpickle.pickle

import pickle 
import os  
import pandas 

df = pandas.DataFrame([1,2,3,4,5,6]) 
filename = os.path.join(os.getcwd(), 'pickle.pickle') 
df.to_pickle(filename) 

那麼它有可能以某種方式獲得醬菜的字符串版本,以便我可以將它存儲在類中?

+0

關於閱讀完整的文件怎麼辦? – Netwave

回答

1

然後有可能以某種方式得到一個字符串版本的 泡菜,以便我可以將它存儲在一個類中?

剛剛看過完整的文件:

with open(filename, "rb") as f: 
    data = f.read() 

然後,如果你需要你可以unpicle它loads

unpickled = pickle.loads(data) 
+0

爲什麼不使用'pickle.load'? –

+1

@cᴏʟᴅsᴘᴇᴇᴅ他要求得到的字符串,我只是指出,他也可以從字符串unickle。 – Netwave

相關問題