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=None)

Clear queries for the given or default DB.

Parameters

db_alias (str|unicode) – Database alias. Default is used if not given.

clear_all()

Clears all queries logged for all DBs.

get_log(db_alias=None)
Parameters

db_alias (str|unicode) –

Return type

deque

sql(db_alias=None, drop_auxiliary=True)

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

Parameters
  • db_alias (str|unicode) – Database alias. Default is used if not given.

  • drop_auxiliary (bool) – Filter out auxiliary SQL like: * BEGIN * COMMIT * END

Return type

list[str|unicode]

time(db_alias=None)

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

Parameters

db_alias (str|unicode) – Database alias. Default is used if not given.

Return type

Decimal

pytest_djangoapp.fixtures.db.db_queries(settings)

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.

Return type

Queries