You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:14:53