2014-02-11 3 views
1

테스트 케이스에는 많은 테스트 기능이 있으며 모든 테스트 기능은 동일한 데이터를 사용합니다.django에서 테스트 케이스 데이터베이스 초기화 방법

class Mytest(TestCase): 
    def init_data(self): 
     insert data1 
     insert data2 
     ..... 
    def test1: 
     do something 
    def test2: 
     do something 
    .... 

어디에서 init_data 함수를 호출해야합니까? 모든 테스트 함수에서 함수를 호출하면 여러 번 데이터가 삽입되어 결과에 영향을 미칩니다. 그리고 첫 번째 테스트 함수에서 init_data를 호출 할 수 있다고 생각합니다. 하지만 많은 테스트 함수를 작성할 때 djang 호출이 내가 쓰는 첫 번째 테스트 함수가 아닌 첫 번째 테스트 함수를 찾는다. 그래서 어떻게해야합니까 init_data() 함수를 호출하거나 다른 방법이 작업을 수행 할 수 있습니다. 미리 감사드립니다.

+0

['setUp'] (https://docs.djangoproject.com/en/dev/topics/testing/overview/#writing-tests) 및'tearDown' 방법을보십시오. – karthikr

답변

1

테스트가 모두 동일한 데이터를 사용하는 경우 테스트 용으로 사용하는 비품 (예 :)을 사용하여 TestCase를 미리 채울 수 있습니다. Django 테스트 문서를 Providing initial data for modelsTest Case documentation으로보십시오.

기본적으로, 당신이해야하는 것은 시험을위한 초기 데이터와 응용 프로그램에 JSON/XML/YAML 파일입니다

[ 
    { 
    "model": "app.somemodel", 
    "pk": 1, 
    "fields": { 
     "somefield": 'data', 
     "otherfield": 'otherdata', 
    } 
    }, 
    # more test model instances to follow. 
] 

것은 당신이 JSON A (위의 예에서들)을 사용하는 경우 파일 이름을 initial_data.json으로 지정하면 테스트를 실행할 때마다 자동으로로드됩니다. special_data.json을하고로드 테스트 케이스를 말씀 : 그렇지 않으면, 특정의 TestCase에 대한로드 할기구 지정, 파일 이름이 도움이

class MyTest(TestCase): 
    fixtures = ['special_data',] 

    def test1: 
     do something 
    # etc 

희망을!

조명기는 테스트 목적으로 초기 데이터를 제공하는 아주 쉽고 간단한 방법이지만 몇 가지 단점이 있습니다. ModelFactoreswhy Carl Meyer thinks you should be using them을 살펴 보길 바랍니다.