Czy ktoś może mi pokazać, jak pisać testy jednostkowe dla modelu sqlalchemy, który stworzyłem przy użyciu nosa.Potrzebuję próbki jednostki python testującej model sqlalchemy z nosem
Potrzebuję tylko jednego prostego przykładu.
Dzięki.
Czy ktoś może mi pokazać, jak pisać testy jednostkowe dla modelu sqlalchemy, który stworzyłem przy użyciu nosa.Potrzebuję próbki jednostki python testującej model sqlalchemy z nosem
Potrzebuję tylko jednego prostego przykładu.
Dzięki.
Możesz po prostu utworzyć bazę danych SQLite w pamięci i powiązać z nią sesję.
Przykład:
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()
# ...
Świetna odpowiedź! Myślę, że musisz wywołać 'create_all' na obiekcie MetaData, aby faktycznie tworzyć tabele. Ponadto, jeśli używane są typy danych specyficzne dla dostawcy bazy danych, niektóre z tych DDL mogą nie działać. – van
Dobre punkty. Zaktualizowałem przykład, aby wyświetlić wywołanie create_all. – codeape
To jest straszna odpowiedź, jeśli SQLLite nie jest Twoją produkcyjną bazą danych. Nigdy nie testuj z inną bazą danych niż ta, której używasz do produkcji. Będą mieć wiele różnic i podejmujesz się katastrofy. –
Zapoznaj się z projektem fixture. Użyliśmy nosa, aby to przetestować, i jest to również sposób na deklaratywne zdefiniowanie danych do przetestowania, będzie kilka przykładów do wykorzystania!
Zobacz także fixture documentation.
Bardziej szczegółowe: potrzebujesz pomocy w ustawianiu nosa? lub jak przetestować model? – van