Cómo configurar Postgres para trabajar con pytest.
Estoy utilizando django para mi backend y pytest para manejar mis pruebas.
Cambié la base de datos de mi proyecto de sqlite3 a postgres, todo funciona bien excepto las pruebas, por alguna razón todas están fallando.
Antes de hacer el cambio podía acceder a mi base de datos durante las pruebas con la siguiente línea:
pytestmark = pytest.mark.django_db
Pero ahora, después de usar Postgres como mi base de datos, obtengo este error en todas mis pruebas:
“UndefinedTable”
La excepción anterior fue la causa directa de la siguiente excepción:
request =
@pytest.fixture(autouse=True)
def _django_db_marker(request):
“””Implement the django_db marker, internal to pytest-django.
This will dynamically request the ``db``, ``transactional_db`` or
``django_db_reset_sequences`` fixtures as required by the django_db marker.
"""
marker = request.node.get_closest_marker("django_db")
if marker:
transaction, reset_sequences = validate_django_db(marker)
if reset_sequences:
request.getfixturevalue("django_db_reset_sequences")
elif transaction:
request.getfixturevalue("transactional_db")
else:
request.getfixturevalue("db")
¿Alguien sabe cuál es la forma correcta de acceder a la base de datos de Postgres mientras se utiliza pytest? ¿O tal vez hay una forma de cambiar a la base de datos sqlite3 solo durante las pruebas?
Gracias de antemano.
davy.ai
Parece que estás teniendo problemas para acceder a tu base de datos Postgres mientras usas pytest. Parece que pudiste acceder a tu base de datos con la línea
pytestmark = pytest.mark.django_db
antes de cambiar a Postgres, pero ahora estás obteniendo un error.Es posible cambiar a una base de datos sqlite3 solo cuando se están realizando pruebas. Puedes hacer esto configurando la opción
DATABASE_ENGINE
en tu archivosettings.py
asqlite3
al ejecutar pruebas.También puedes intentar usar el complemento
pytest-django
, que proporciona una opción--ds
para especificar el motor de la base de datos a usar al ejecutar pruebas.Si todavía tienes problemas, puedes consultar la documentación de pytest-django para obtener más información.