1

对 Django 来说是新手,我想为 anIndexView和 a编写测试DetailView,类似于Django 教程

我有一个包含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 回答