Skip to content

Database

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

Functions

db_queries

db_queries(settings) -> Generator[Queries, None, None]

Allows access to executed DB queries.

def test_db(db_queries):

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

    ...  # Do some DB-related stuff.

    with db_queries.scope() as qrs:
        ...  # Do other DB-related stuff.
        assert len(qrs) == 2

    # or
    with db_queries.scope(expect=2):
        ...  # Do other DB-related stuff.

    # Assert total queries on default DB.
    assert len(db_queries) == 10

    # The default DB 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 the default DB.
    db_queries.clear()

Warning

Requires Django 1.9+ to work.


Classes

Queries

Queries()

Allows access to executed DB queries.


clear

1
2
3
.clear(
    db_alias: str = '',  # (1)!
)
  1. Database alias. Default is used if not given.

Clear queries for the given or the default DB.


clear_all

.clear_all()

Clears all queries logged for all DBs.


get_log

.get_log(db_alias: str = '') -> deque

scope

1
2
3
4
.scope(
    db_alias: str = '', 
    expect: int | None = None,  # (1)!
) -> Generator[Queries, None, None]
  1. Number of SQL queries expected.

Context manager for scoped sql checks. Exposes the object with the same methods as given by db_queries (Queries).


sql

1
2
3
4
.sql(
    db_alias: str = '',  # (1)!
    drop_auxiliary: bool = True,  # (2)!
) -> list[str]
  1. Database alias. Default is used if not given.

  2. Filter out auxiliary SQL like:

    • BEGIN
    • COMMIT
    • END

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


time

1
2
3
.time(
    db_alias: str = '',  # (1)!
) -> Decimal
  1. Database alias. Default is used if not given.

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