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.

Desactiva la función before_serving mientras ejecutas pytest en Quart.

Estoy utilizando la aplicación Quart.

Estoy llamando a un servicio en mi función de antes de servir (inicialización de la aplicación) y no quiero llamar a eso en las pruebas de pytests. En realidad, quiero desactivar mi función antes de servir o algo así, como simularlo.

import pytest
@pytest.mark.asyncio
async def test_my_api_call(test_app: Pint, headers: dict):
    test_client = test_app.test_client()
    response = await test_client.get("/get_user", headers)
    assert response.status_code == 200

Esta es mi test_app.

@pytest.fixture(name="test_app", scope="function")
async def _test_app(s3_client, tmp_path, async_mongodb):
    os.environ["BLOB_STORE"] = str(tmp_path)
    db_config['db'] = async_mongodb
    async with app.test_app() as test_app:
         yield test_app
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para desactivar la función “before_serving” en tu aplicación Quart durante pytest, puedes usar el complemento “monkeypatch” proporcionado por pytest. Puedes reemplazar la implementación original de la función con una implementación ficticia que no hace nada.

    Aquí tienes un ejemplo de cómo puedes usar “monkeypatch” para burlar la función “before_serving”:

    import pytest
    
    @pytest.fixture(name="app")
    async def _app(s3_client, async_mongodb):
        # Aquí va tu código de inicialización de la aplicación
    
        return app
    
    def test_my_api_call(monkeypatch, app, headers):
        # Desactiva la función "before_serving"
        monkeypatch.setattr(app, "before_serving", lambda: None)
    
        test_client = app.test_client()
        response = await test_client.get("/get_user", headers=headers)
        assert response.status_code == 200
    

    En este ejemplo, usamos el complemento “monkeypatch” para reemplazar la implementación de la función “before_serving” con una función lambda que no hace nada. Esto desactiva efectivamente la función “before_serving” durante la ejecución de la prueba. Ten en cuenta que necesitas pasar el complemento “monkeypatch” como argumento a tu función de prueba para que esto funcione.

    También puedes usar “monkeypatch” para burlar otras funciones o módulos que son llamados por tu función “before_serving”, con el fin de aislar tu prueba de dependencias externas.

Comments are closed.