2012-05-25 6 views
5

나는 django 유닛 테스트를 좋아하는데, 실행시 테스트 데이터베이스를 만들고 삭제하기 때문이다.토네이도. 장고와 같은 테스트 러너와 테스트 데이터베이스

토네이도에 대한 테스트 데이터베이스를 만드는 방법에는 어떤 것이 있습니까?

UPD : 테스트 실행시 postgresql 테스트 데이터베이스 생성에 관심이 있습니다.

+0

토네이도는 특정 데이터베이스를 묶어 놓지 않으므로 사용중인 특정 데이터베이스를 참조 할 때이 질문에 더 잘 응답 할 수 있습니다. 즉, MongoDB 백엔드 용 테스트 장비를 사용하지만 PostgreSQL 또는 MySQL을 사용하고있을 수 있습니다. – ESV

+0

@ESV 여기 조롱하는 데 문제가 있습니다. 우리는 토네이도에 대해 설명 된 postgresql 데이터베이스 스키마가 없습니다. BTW 우리는 장고 모델에서 SQL을 생성하고 테스트에 사용할 수 있습니다. –

답변

5

가장 쉬운 방법은 테스트 데이터베이스에 SQL 덤프를 사용하는 것입니다. 데이터베이스를 만들고 조명기로 채우고 파일에 작성하십시오. 테스트를 실행하기 전에 (또는 DB를 재설정하려는 경우) load_fixtures으로 전화하십시오. 이 방법은 확실히 개선 될 수 있지만 내 요구에 충분히 적합합니다.

import os 
import unittest2 

import tornado.database 

settings = dict(
    db_host="127.0.0.1:3306", 
    db_name="testdb", 
    db_user="testdb", 
    db_password="secret", 
    db_fixtures_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures.sql'), 
) 

def load_fixtures(): 
    """Fixtures are stored in an SQL dump. 
    """ 
    os.system("psql %s --user=%s --password=%s < %s" % (settings['db_name'], 
     settings['db_user'], settings['db_password'], settings['db_fixtures_file'])) 

    return tornado.database.Connection(
     host=settings['db_host'], database=settings['db_name'], 
     user=settings['db_user'], password=settings['db_password']) 
+0

이렇게하면됩니다. –

관련 문제