Python单元测试:目录和文件路径

时间:2018-10-31 18:42:31

标签: python unit-testing path

我正在开发的库具有以下文件结构,该库公开了keras模型:

relevancy (repo)
    relevancy (package repo)
        data
            model.h5
            tokenizer.pickle
        test
            __init__.py
            test_model.py
        model.py
        __init__.py
    __init__.py
    setup.py

该库基本上会加载经过预先​​训练的tokenizer.picklemodel.h5并根据输入数据进行预测。

model.py中,我有一个函数,其中包含以下代码,用于加载令牌生成器和模型:

def load()
    with open("data/tokenizer.pickle", "rb") as f:
        tokenizer = pickle.load(f)
    model = keras.models.load_model("data/model.h5")
    return tokenizer, model

test_model.py中,我在测试中调用此函数。

然后,如果我在python setup.py test下调用/relevancy (repo),则会收到错误消息,提示找不到data/tokenizer.pickle。显然,亲戚是造成问题的原因。

我应该如何设置目录或路径,以便总能正确加载令牌生成器和模型?

1 个答案:

答案 0 :(得分:1)

如果您需要访问存储在软件包中的数据文件,请考虑使用pkg_resources module

然后在model.py中,您可以执行以下操作:

filename = pkg_resources.resource_filename(__name__, 'data/tokenizer.pickle')
with open(filename, 'rb') as f:
    ...