2017-09-04 73 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

相关问题