Integration with Pytest

Starting from version 14.0.0, Mimesis now supports pytest out of the box. You no longer require any third-party packages to seamlessly integrate Mimesis with pytest.


Using the personal provider as part of a test.

# your_module/

def validate_email(email):
    # code that validates an e-mail address
    return True

And your test file:

from your_module import validate_email

def test_validate_email(mimesis):
    assert validate_email(mimesis('email'))

You can also specify locales:

from mimesis.locales import Locale

@pytest.mark.parameterize('mimesis_locale', [Locale.DE])  # use German locale
def test_create_user(mimesis):
    assert create_user(name=mimesis('full_name'))

@pytest.mark.parameterize('mimesis_locale', [Locale.DE, Locale.EN, Locale.JP])  # test multiple locales
def test_add_phone(user, mimesis):
    assert user.add_phone_number(name=mimesis('full_name'))


We offer two public fixtures: mimesis_locale and mimesis. While mimesis_locale is an enum object (e.g., Locale.EN, Locale.RU), mimesis is an instance of mimesis.schema.Field.

See mimesis.enums.Locale.

Impact on Test Speed

We employ caching of Mimesis instances for various locales throughout the entire test session, making the creation of new instances cost-effective.