Search code examples
pythontestingsqlalchemydoctestdocstring

Doctest for dynamically created objects


What is the best way to test code like this (the one below obviously fails while object is created in different block every time):

def get_session(db_name, verbose, test):
"""Returns current DB session from SQLAlchemy pool.

>>> get_session('Mmusc20090126', False, True)
<sqlalchemy.orm.session.Session object at 0xfb5ff0>

"""
if test:
    engine = create_engine('sqlite:///:memory:', echo=verbose)
    log_load.debug('DB in RAM.')
else:
    engine = create_engine('sqlite:///' + 'DB/' + db_name + '.db', echo=verbose)
    log_load.debug('DB stored in file: %s' % 'DB/' + db_name + '.db')

# Create TABLES: Structures, Interactions, Interactors, PDB_UniProt, UniProtSeq
meta.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

return session

Solution

  • I think you want to use ellipsis, like this:

    >>> get_session('Mmusc20090126', False, True) #doctest: +ELLIPSIS
    <sqlalchemy.orm.session.Session object at 0x...>
    

    See here for more info.