#3355·luigi

当 threads 为 1 时, S3Client.copy() 发生 TypeError

作者: ttcm3010创建于 2025年5月28日更新于 2025年5月28日

说明

测试test min threads-forcement ' 失败,因为typeError'的type-file.call args' returnNone',意思是tycopy file ()'在执行S3Client.copy ()'时从未被调用。

  • 重现步骤

最小可复制试验:

导入 Os
导入 sys
导入临时文件
导入单位测试
从日期导入日期时, 时间delta
从unittest.mock 导入 MagicMock, 补丁
从 luigi.condrib.s3 导入 S3 客户端
从 luigi 中导入目标 。

类 TestS3 Copy( 单位测试). 测试案例 :

设置( 自 ) :
自我.客户端 = S3Client(aws access key id='fake key',
aws secret access key='fake secret'),简称"秘密".
自定义. client. s3 = magicMock ()
自我. client.isdir = magicMock ()
自定义。 client.  copy dir = MagicMock( return value=(3, 1024))
自我. client.   copy file = MagicMock( return value=(1, 512)) 页面存档备份,存于互联网档案馆

def 测试  min  线索  执行( 自 ):
"""测试最小线程数执行""
自我.client.copy ('s 3://src/ file','s 3://dest/ file', sreshs=1) 互联网档案馆的存檔,存档日期2014-12-1.
args, kwargs = self. client.   copy file.call args (中文(简体) ).

此测试假设, 复制一个带有“ 线程=1” 的文件时, 将调用 {复制 file () 。

** 预期行为:**

在复制一个带有 " 线程=1 " 的单一S3文件时, " 复制() " 方法应内部调用 " 复制()文件 " ,测试应能够检查其呼叫论据。

** 实际行为:**

copy()'方法不援引copy files()',导致call args'是无'。 试图拆开无'字引起TypeError'。

追踪是:

                   TestS3 Copy.test min threads 执行 QQ

自我 = < contrib.test copy ttmp. TestS3 Copy test Method=test min threads forcement > (中文(简体) ).

def 测试  min  线索  执行( 自 ):
"""测试最小线程数执行""
自我.client.copy ('s 3://src/ file','s 3://dest/ file', sreshs=1) 互联网档案馆的存檔,存档日期2014-12-1.
> args, kwargs = self. client.   copy  file. call  args (英语).
E 类型错误: 无法解开不可插入的 NoneType 对象

测试/内存/测试 复制 tttmp.py:40:类型错误

** 复制方式*:总是

** 变动**:

  • ** 路易吉**:大师

  • ** Python**: 3.10.16

*活性试验:8.3.5

  • ** 格式**:Linux