Label Studio Django项目Azure存储单元测试同步问题求助
Label Studio Azure存储单元测试问题及解答
问题描述
我正在为Label Studio项目添加新的单元测试,但无法完成存储上传操作:
创建Azure SPI存储的请求:
- name: stage request: data: container: pytest-azure-images project: '{project_pk}' title: Testing Azure SPI storage (bucket from conftest.py) use_blob_urls: true method: POST url: '{django_live_url}/api/storages/azure_spi' response: save: json: storage_pk: id status_code: 201
执行同步请求后返回last_sync_count: 0:
- name: stage request: method: POST url: '{django_live_url}/api/storages/azure_spi/{storage_pk}/sync' response: json: last_sync_count: 0 status_code: 200
请问conftest.py中的bucket是如何实现上传的?
解答
对应的测试实现中,conftest.py里的Azure Bucket上传逻辑核心步骤如下:
- Mock Azure存储客户端:测试全程使用
unittest.mock模拟azure.storage.blob下的客户端类,无需依赖真实Azure云服务,所有存储操作都是本地模拟执行。 - 预初始化测试容器:在测试夹具(fixture)中提前创建名为
pytest-azure-images的测试容器,通过模拟的BlobServiceClient获取容器客户端,并调用create_container方法完成容器初始化(无真实云交互)。 - 上传测试文件:测试启动前,通过模拟的
BlobClient调用upload_blob方法,将预设的测试图片二进制内容上传到mock容器中,为后续同步操作提供数据源。 - 绑定项目与存储:创建存储的API请求中指定
project: '{project_pk}',确保存储与测试项目关联,同步时能正确识别项目范围内的存储资源。
同步返回last_sync_count: 0的常见原因:
- mock容器中未成功上传测试文件,导致同步无资源可拉取
- 请求中指定的容器名称与conftest.py中创建的mock容器名称不匹配
- 同步逻辑对文件格式、路径有过滤规则,测试文件不符合要求
内容的提问来源于stack exchange,提问作者Manrique Vargas
相关产品推荐
相关产品推荐

