Database

These fixtures are related to Django database operation, including issued by ORM.

class pytest_djangoapp.fixtures.db.Queries

Allows access to executed DB queries.

clear(db_alias: str = None)

Clear queries for the given or default DB.

Parameters:db_alias – Database alias. Default is used if not given.
clear_all()

Clears all queries logged for all DBs.

get_log(db_alias: str = None) → deque
Parameters:db_alias
sql(db_alias: str = None, *, drop_auxiliary: bool = True) → List[str]

Returns a list of queries executed using the given or default DB.

Parameters:
  • db_alias – Database alias. Default is used if not given.
  • drop_auxiliary – Filter out auxiliary SQL like: * BEGIN * COMMIT * END
time(db_alias: str = None) → decimal.Decimal

Returns total time executing queries (in seconds) using the given or default DB.

Parameters:db_alias – Database alias. Default is used if not given.
pytest_djangoapp.fixtures.db.db_queries(settings) → pytest_djangoapp.fixtures.db.Queries

Allows access to executed DB queries.

Example:

def test_db(db_queries):

    # Previous queries cleared at the beginning.
    assert len(db_queries) == 0

    ...  # Do some DB-related stuff.

    # Assert total queries on all DBs.
    assert len(db_queries) == 10

    # Default DBs SQLs with auxiliary commands filtered out by default.
    sqls = db_queries.sql()

    # Assert total execution time is less than a second.
    assert db_queries.time() < 1

    # Drop SQL gathered so far on default DB.
    db_queries.clear()

Warning

Requires Django 1.9+ to work.