2009-05-07 14 views
22

के साथ अजगर इकाई परीक्षण sqlalchemy मॉडल का नमूना चाहिए, क्या कोई मुझे दिखा सकता है कि नाक का उपयोग करके बनाए गए स्क्लेल्चेमी मॉडल के लिए यूनिट परीक्षण कैसे लिखना है।मुझे नाक

मुझे बस एक साधारण उदाहरण की आवश्यकता है।

धन्यवाद।

+3

अधिक विशिष्ट बनें: क्या आपको नाक को सेटअप करने में सहायता चाहिए? या मॉडल का परीक्षण कैसे करें? – van

उत्तर

35

आप बस एक इन-मेमोरी SQLite डेटाबेस बना सकते हैं और उसमें अपना सत्र बाध्य कर सकते हैं।

उदाहरण:


from db import session # probably a contextbound sessionmaker 
from db import model 

from sqlalchemy import create_engine 

def setup(): 
    engine = create_engine('sqlite:///:memory:') 
    session.configure(bind=engine) 
    # You probably need to create some tables and 
    # load some test data, do so here. 

    # To create tables, you typically do: 
    model.metadata.create_all(engine) 

def teardown(): 
    session.remove() 


def test_something(): 
    instances = session.query(model.SomeObj).all() 
    eq_(0, len(instances)) 
    session.add(model.SomeObj()) 
    session.flush() 
    # ... 
+1

महान जवाब! मुझे लगता है कि आपको वास्तव में टेबल बनाने के लिए मेटाडेटा ऑब्जेक्ट पर 'create_all' को कॉल करने की आवश्यकता है। इसके अलावा यदि डीबी-विक्रेता विशिष्ट डेटा प्रकारों का उपयोग किया जाता है, तो कुछ डीडीएल नहीं चल सकते हैं। – van

+0

अच्छा अंक। मैंने create_all पर कॉल दिखाने के लिए उदाहरण अपडेट किया। – codeape

+5

यदि SQLLite आपका उत्पादन डेटाबेस नहीं है तो यह एक भयानक उत्तर है। आप उत्पादन में उपयोग कर रहे किसी भी डेटाबेस से कभी भी परीक्षण न करें। उनके पास बहुत अंतर होंगे और आप एक आपदा के लिए खुद को स्थापित कर रहे हैं। –

2

चेक बाहर fixture परियोजना। हमने इसका परीक्षण करने के लिए नाक का इस्तेमाल किया और यह डेटा का परीक्षण करने के लिए घोषणात्मक रूप से परिभाषित करने का एक तरीका भी है, वहां आपके उपयोग के लिए कुछ व्यापक उदाहरण होंगे!

fixture documentation भी देखें।

संबंधित मुद्दे