gpt4 book ai didi

django - 模拟 Django 存储模型 ImageField 后端 S3

转载 作者:行者123 更新时间:2023-12-03 14:55:41 28 4
gpt4 key购买 nike

我有一个由 django-storages 的 S3Boto 支持的带有 ImageField 的模型。我对“上传图像” View 的练习进行了测试,但是它将图像上传到 S3 的事实正在减慢我的测试套件的速度。

为了加快我的测试速度,处理这个问题的最佳实践是什么?我应该模拟 S3Boto 吗?也许有一个内存支持的存储后端非常适合测试(自动清理会很好!)?

最佳答案

我也刚遇到这个问题。通过使用 dj-inmemorystorage ,我得到了更快的测试。 .

快捷方式设置的方法是创建一个 test_settings.py在与您的设置相同的文件夹中:

from settings import *
DEFAULT_FILE_STORAGE = 'inmemorystorage.InMemoryStorage'

...并调用 ./manage.py test --settings=project.test_settings运行测试。

我的首选方式是设置一个自定义测试运行器:

project/test_runner.py :
from django.conf import settings
from django.test.runner import DiscoverRunner

class FastTestRunner(DiscoverRunner):
def setup_test_environment(self):
super(FastTestRunner, self).setup_test_environment()
# Don't write files
settings.DEFAULT_FILE_STORAGE = 'inmemorystorage.InMemoryStorage'
# Bonus: Use a faster password hasher. This REALLY helps.
settings.PASSWORD_HASHERS = (
'django.contrib.auth.hashers.MD5PasswordHasher',
)

注意:这也设置了 PASSWORD_HASHER , 因为它 significantly improves User creation time .这不应该在生产中设置。

project/settings.py :
TEST_RUNNER = 'project.test_runner.FastTestRunner'

要求:
pip install dj-inmemorystorage

更新 :从 django-inmemorystorage 更改至 dj-inmemorystorage .

更新 2 : 删除 django-discover-runner ,因为它现在是 django 中的默认测试运行程序,并修复了指向 PASSWORD_HASHER 的链接相关博文。

关于django - 模拟 Django 存储模型 ImageField 后端 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150169/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com