单元测试时,Django应用程序+ Amazon S3生成RequestTimeTooSkewed

时间:2019-04-24 09:18:50

标签: django unit-testing amazon-s3 freezegun

我维护了一个大型Django网站,并决定将存储移至Amazon S3。

我们有很多单元测试,涵盖了帐单/发票代码。所有生成的文档会自动存储为文件,并且借助django-s3-storage将它们透明地放置在S3中。

但是,为了正确模拟不同的场景,我们使用freezegun实用程序来伪造测试中的系统时间。其中一些更改了一年或更长时间的时间,并且在尝试将文件推送到S3时,我们遇到了很多An error occurred (RequestTimeTooSkewed) when calling the ListObjectsV2 operation: The difference between the request time and the current time is too large.

的错误。

有人对这种错误有很好的解决方案吗?我的第一个想法是:

  1. 移至本地存储以进行测试-一个坏主意,因为我们希望测试使用的环境尽可能类似于生产环境。
  2. mock修补存储代码,然后将真实的datetime推到那里-一种补丁,它增加了一层复杂性。

0 个答案:

没有答案