MySQL

Integration with MySQL

Installation

pip install pytest-databases[mysql]

Usage Example

import mysql.connector
from pytest_databases.docker.mysql import MySQLService

pytest_plugins = ["pytest_databases.docker.mysql"]

def test(mysql_service: MySQLService) -> None:
    with mysql.connector.connect(
        host=mysql_service.host,
        port=mysql_service.port,
        user=mysql_service.user,
        database=mysql_service.db,
        password=mysql_service.password,
    ) as conn, conn.cursor() as cursor:
        cursor.execute("select 1 as is_available")
        resp = cursor.fetchone()
        assert resp is not None and resp[0] == 1

def test(mysql_connection: mysql.connector.MySQLConnection) -> None:
    with mysql_connection.cursor() as cursor:
        cursor.execute("CREATE TABLE if not exists simple_table as SELECT 1 as the_value")
        cursor.execute("select * from simple_table")
        result = cursor.fetchall()
        assert result is not None and result[0][0] == 1

Available Fixtures

  • mysql_service: A fixture that provides a MySQL service (latest version).

  • mysql_connection: A fixture that provides a MySQL connection.

The following version-specific fixtures are also available:

  • mysql_56_service, mysql_56_connection: MySQL 5.6

  • mysql_57_service, mysql_57_connection: MySQL 5.7

  • mysql_8_service, mysql_8_connection: MySQL 8.x

Service API

class pytest_databases.docker.mysql.MySQLService(host, port, db, user, password)[source]

Bases: ServiceContainer

db: str
user: str
password: str
__init__(host, port, db, user, password)
pytest_databases.docker.mysql.xdist_mysql_isolation_level()[source]
Return type:

Literal['database', 'server']

pytest_databases.docker.mysql.mysql_service(mysql_8_service)[source]
Return type:

MySQLService

pytest_databases.docker.mysql.mysql_56_service(docker_service, xdist_mysql_isolation_level)[source]
Return type:

Generator[MySQLService, None, None]

pytest_databases.docker.mysql.mysql_57_service(docker_service, xdist_mysql_isolation_level)[source]
Return type:

Generator[MySQLService, None, None]

pytest_databases.docker.mysql.mysql_8_service(docker_service, xdist_mysql_isolation_level)[source]
Return type:

Generator[MySQLService, None, None]

pytest_databases.docker.mysql.mysql_56_connection(mysql_56_service)[source]
Return type:

Generator[MySQLConnectionAbstract, None, None]

pytest_databases.docker.mysql.mysql_57_connection(mysql_57_service)[source]
Return type:

Generator[MySQLConnectionAbstract, None, None]

pytest_databases.docker.mysql.mysql_connection(mysql_8_connection)[source]
Return type:

MySQLConnectionAbstract

pytest_databases.docker.mysql.mysql_8_connection(mysql_8_service)[source]
Return type:

Generator[MySQLConnectionAbstract, None, None]