2012-05-25 26 views
5

Tôi thích thử nghiệm đơn vị django, gây ra chúng tạo và thả cơ sở dữ liệu thử nghiệm khi chạy.Tornado. Django giống như testrunner và kiểm tra cơ sở dữ liệu

Cách tạo cơ sở dữ liệu thử nghiệm cho cơn lốc xoáy tồn tại?

UPD: Tôi quan tâm đến việc tạo cơ sở dữ liệu thử nghiệm postgresql khi chạy thử nghiệm.

+0

Vì Tornado không liên kết với cơ sở dữ liệu cụ thể, bạn có thể nhận được phản hồi tốt hơn cho câu hỏi này nếu bạn tham khảo cơ sở dữ liệu cụ thể bạn đang sử dụng. Tức là, tôi sử dụng một giàn khoan thử nghiệm cho chương trình phụ trợ MongoDB của tôi, nhưng bạn có thể đang sử dụng PostgreSQL hoặc MySQL. – ESV

+0

@ESV Vấn đề trong mô phỏng db ở đây, là chúng ta không có lược đồ cơ sở dữ liệu postgresql được mô tả cho lốc xoáy. BTW chúng tôi có thể tạo sql từ các mô hình django và sử dụng nó trong các bài kiểm tra. –

Trả lời

5

Tôi thấy cách dễ nhất là chỉ sử dụng kết xuất SQL cho cơ sở dữ liệu thử nghiệm. Tạo một cơ sở dữ liệu, điền nó với các đồ đạc và ghi nó ra tệp. Chỉ cần gọi load_fixtures trước khi bạn chạy thử nghiệm (hoặc bất cứ khi nào bạn muốn đặt lại DB). Phương pháp này chắc chắn có thể được cải thiện, nhưng nó đủ tốt cho nhu cầu của tôi.

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

Sẽ đào theo cách này. –

Các vấn đề liên quan