我正在尝试用 模拟一个 s3 实例Moto
,这似乎确实有效,但是由于某种原因,它似乎在真正的 s3 中搜索文件而不是模拟的 s3。
我的工作层次结构如下所示:
root
--tests
----mock s3
------__init__.py
------conftest.py
------test mock s3.py
在conftest
我这样嘲笑s3:
fixture
def mock s3():
mock = mock_s3()
mock.start()
client = boto3.client('s3')
add buckets and keys to the client
yield client
mock.stop()
test mock s3.py
看起来像这样:
usefixtures('mock s3')
def test_something():
path = Path('s3://bucket/key')
files = all the files from the path
assert some stuff
当我运行pytest tests/mock s3/test mock s3.py
它似乎工作正常。但是,如果我在运行时pytest
(例如pytest tests/mock s3
)由于某种原因不直接调用文件,它似乎没有使用我的模拟 s3,files
从 s3 取回真实文件。
模拟夹具仍然被应用(我知道,因为我添加了打印的打印件)但由于某种原因它无法在模拟中找到文件。
编辑——添加路径和文件到test_something