2013-02-03 4 views
3

현재 작업중인 게임 응용 프로그램에서 다른 응용 프로그램 모델의 일반 리더 보드를 제공하는 장고 응용 프로그램으로 라이브러리를 만들고 있습니다. 내 라이브러리의 클라이언트는 실제로 만들고있는 추상 기본 클래스를 확장해야하며 실제로 객체를 집계하는 코드를 제공하는 메소드를 재정의해야합니다.새로운 타사 Django 라이브러리에 대한 단위 테스트 작성 방법

이 차트 앱을 독립적으로 유지하고 느슨하게 결합하여 쉽게 열어서 오픈 소스로 만들 수 있기 때문에 어떤 모델에도 의존하지 않는 단위 테스트를 작성하려고합니다. 앱의 전체 목적은 외부 앱에있는 모델의 데이터를 본질적으로 집계하는 것이지만. 앱의 models.py에 더미 모델을 만들 수는 있지만 라이브러리를 사용하는 모든 프로젝트에 대해 사용되지 않는 테이블이 만들어져 비 적합하다고 판단됩니다. 이것을하기위한 이상적인 방법이 있습니까?

답변

3

지금까지 두 가지 옵션을 볼 수 있습니다.

옵션 1 : 관리되지 않는 모델 클래스를 만들고 테스트에서 수동으로 데이터베이스 테이블을 만들고 파괴하십시오.

옵션 2 (내가 선택한 것) : 내 tests 모듈에서 테스트 모델을 선언하십시오. 테이블 here 및 테스트에서 syncdb 트리거 방법을 따라 테이블을 만듭니다. 테스트에 맞게 다음과 같이 구성됩니다.

from django.core.management import call_command 
from django.db import models 
from django.test import TestCase 

class TestModel(models.Model): 
    data = models.FloatField() 

    class Meta: 
     app_label = 'myapp' 

class LibraryTests(TestCase): 
    def setUp(self): 
     super(LibraryTests, self).setUp() 
     models.register_models('myapp', TestModel) 
     call_command('syncdb')