首页 > 解决方案 > 在 python (pytest) 测试中使用资源文件

问题描述

有人能告诉我在 pytest 中处理资源文件的正确方法是什么吗?

我习惯在包(src)目录下创建一个资源目录,在测试分支下创建另一个

root---package---resource_dir
     |         |-file1.py
     |         |-file2.py
     |
     |-test-- resource_dir-
            |              |-config1.csv
            |              |-config2.csv
            |-test1.py
            |-test2.py

如果我想从我的测试中访问这些文件,那么 pythonic 的方法是什么?到目前为止,我一直在使用相对文件路径,但该解决方案并不是很好。有类似Java资源解决方案的解决方案吗?

标签: pythonpython-3.xpytest

解决方案


我会将根文件夹和 test/resource_dir 添加到 sys.path。无论您的测试文件夹当前的目录结构如何,这将允许您始终以完全相同的方式包含资源。

将根文件夹添加到 sys.path 还有助于在测试运行程序和正常执行之间建立一致性,并允许您的测试直接引用来自root/package/resource_directory.

添加test/resource_dir到 sys.path 允许测试直接引用来自test/resource_dir.

有关如何设置它的一些示例代码,请参阅此答案lib上的选项 B,但将文件夹替换为resource_dir.


推荐阅读