【发布时间】:2023-04-06 18:29:01
【问题描述】:
我的包结构如下:
.
├── my_app
│ ├── app.py
│ ├── cli.py
│ ├── db.py
│ └── __init__.py
├── setup.py
├── tests
│ ├── data
│ │ └── foobar.gz
│ ├── test_app.py
│ └── test_database.py
└── tox.ini
在test_app.py
内,我这样做:
import pkg_resources
path = '../tests/data/foobar.gz'
full_path = pkg_resources.resource_filename(__name__, path)
现在我看到了消息:
/usr/local/lib/python3.7/site-packages/pkg_resources/__init__.py:1145: DeprecationWarning: Use of .. or absolute path in a resource path is not allowed and will raise exceptions in a future release. self, resource_name
我应该怎么做?
(我也可以更改包的结构,但我想将测试数据保留在测试中 - 运行应用程序不是必需的)
【问题讨论】:
-
您在什么情况下尝试这样做?部分问题在于,您的
tests
目录实际上并不是包的一部分。这本身很好(关于哪种方式更好,但任何一种方式都是合理的)。所以pkg_resources
抱怨你试图访问包外的文件。如果您只想获取相对于test_app.py
的文件的路径,您只需要os.path.join(os.path.dirname(__file__), 'data', 'foobar.gz'))
-
你是说我应该改变项目结构?
标签:
python
python-3.x
unit-testing
python-packaging
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在 Python 的测试中获取文件? - Python技术站