たにしきんぐダム

プログラミングやったりゲームしてます

ダミー画像なしでImageFieldを含むFormのテスト

たとえばこんなフォームのテストをしたいとき

from django import forms

class HogeForm(forms.Form):
    name = forms.CharField(max_length=100)
    image = forms.ImageField(upload_to='images/')

テスト用のダミー画像を用意するのもいいが、ダミー画像なしでテストする方法として、PILとSimpleUploadedFileを使ってアップロードされた画像ファイルっぽいものを作ってテストできる。


gistff7336608fca2c889955

使い方

from django.test import TestCase
from your_app_name.forms import HogeForm
from inmemory_image_generator import get_image_dict

class HogeTest(TestCase):
    def test_hoge(self):
        img_dict = get_image_dict()
        param = {'name': 'foo'}
        form = HogeForm(param, img_dict)
        self.assertTrue(form.is_valid())

こんな感じでテストできて便利