DjangoでImageFieldに画像が設定されていないことをテストする

ImageFieldに画像が設定されていないことをテストで確認したい場合はどうするか


以下の例の通り、画像を設定していないImageFieldはNoneではないので、TestCaseのassertIsNoneなどでは正しくテストできない

>>> p = Person.objects.get(pk=1)
>>> p.profile_image
<ImageFieldFile: None>
>>> p.profile_image is None
False


ImageFieldの値をそのままboolに渡すと、画像が設定されていない場合は結果がFalseになるので、assertFalseを使ってテストできる

>>> bool(p.profile_image)
False
>>> p.another_image
<ImageFieldFile: another_image/dummy.png>
>>> bool(p.another_image)
True

他にもやりかたあるんだろうけど、とりあえずこれで確認できた