1

Django は初めてなので、 Django のチュートリアルと同様に、 anIndexViewと a のテストを書きたいと思います。DetailView

FilerImageField必須フィールド ( )を含むモデルがありますblank=False

そのモデルに関連するビューをテストするために、プログラムでモデル インスタンスを作成したいと考えています。

コード内を作成する方法に関するこの質問を認識しFilerImageFieldています。主張されている解決策を適用する際に遭遇する問題は、画像の所有者に関する部分を正しくすることです。

def create_exhibitor(name, image_path, active):
    filename = 'file'
    user = User.objects.get(username='myuser')
    with open(image_path) as f:
        file_obj = File(f, name=filename)
        image = Image.objects.create(
            owner=user,
            original_filename=filename,
            file=file_obj
        )

        return Exhibitor(name=name, image=image, active=active)

それらのテストを実行すると、次の結果が得られます。

Traceback (most recent call last):
...
DoesNotExist: User matching query does not exist.

私には、テスト データベースにユーザーがないように見えます。

だから私の質問は本当に二重です:

を含むモデルのインスタンスを作成するためにそこにユーザーが必要FilerImageFieldですか?

その場合、テスト用に作成するにはどうすればよいですか?

4

1 に答える 1

0

私は最終的に次のようにしています:

from django.test import TestCase
from django.contrib.auth.models import User
from django.core.files.uploadedfile import SimpleUploadedFile
from .models import Exhibitor

class TestCase():
    su_username = 'user'
    su_password = 'pass'

    def setUp(self):
        self.superuser = self.create_superuser()

    def create_superuser(self):
        return User.objects.create_superuser(self.su_username, 'email@example.com', self.su_password)

    def create_exhibitor(self):
       name = 'eins'
       active = True
       image_file = SimpleUploadedFile(
        'monkey.jpg', b'monkey', content_type="image/jpeg"
       )
       return Exhibitor(name=name, image=image_file, active=active)
于 2015-08-25T10:51:02.377 に答える