2014-11-12 3 views
1

장고에 대한 새로운 내용으로 과 유사하게 IndexViewDetailView에 대한 테스트를 작성하고 싶습니다.FilerImageField가 포함 된 장고 테스트 모델

나는 FilerImageField을 필수 필드 (blank=False)로 포함하는 모델을 가지고 있습니다.

해당 모델과 관련된 내 견해를 테스트하기 위해 프로그래밍 방식으로 모델 인스턴스를 만들고 싶습니다.

코드에 FilerImageField을 만드는 방법을 설명하는 this 질문에 대해 알고 있습니다. 혐의가있는 해결책을 적용 할 때 문제가되는 부분은 이미지의 소유자에 관한 부분입니다. 나에게

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

는 테스트 데이터베이스에는 사용자가 없습니다 나타납니다을 Runnging

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) 

는 수율을 테스트합니다.

그래서 제 질문은 두 가지 정말 :

내가 FilerImageField가 포함 된 모델의 인스턴스를 만들 수 있습니다 사용자가 필요하십니까?

그렇다면 테스트 목적으로 어떻게 만들 수 있습니까?

답변

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 protected]', 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)