es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 archivo settings.py a sqlite3 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.

Comments are closed.