繁体   English   中英

不能在 pytest 测试中使用腌制的 function

[英]Can't use pickled function inside a pytest test

所以我有这种情况,我创建了一个依赖于functionpandas ,然后我对其进行pickle ,然后重新加载并尝试运行并给出pd is not defined error

def pandize(arg):
    pd.DataFrame('a')

import dill
with open('pandize.pkl', 'wb') as f:
    dill.dump(pandize, f)

with open('pandize.pkl', 'rb') as f:
    p = dill.load(f)

p(1)
NameError: name 'pd' is not defined

之后,我import pandas as pd并调用代码。

但我无法在pytest测试 function 中复制此行为。 即使我将import pandas as pd我仍然收到NameError pd is not defined 任何想法为什么?

正如@MrBeanBremen在评论中的链接问题中指出的那样,导入__main__然后在__main__中定义pandas取得了成功:

import pandas as pd
import __main__
__main__.pd = pd

with open('pandize.pkl', 'rb') as f:
    p = dill.load(f)

p(1)

此设置不会再导致测试因NameError而失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM