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'])
Nguồn
2012-09-22 07:44:35
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
@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. –