Estoy tratando de hacer una prueba unitaria que verifique si se llamó al método del punto final FastAPI deseado. Hizo mock.spy y durante las pruebas genera un error de que el método se llamó 0 veces. Aunque la salida incluso tiene un texto de verificación del método de punto final. ¿Cómo soluciono esto?
Mi prueba unitaria:
client = TestClient(main.app) pytestmark = pytest.mark.unit @pytest.mark.unit def test_get_best_authors(mocker: MockFixture): mocker.spy(main, 'best_authors') client.get('/luchshie-avtori').json() assert main.best_authors.assert_called_once()Mi código de punto final en main.py:
@app.get("/luchshie-avtori") async def best_authors(): print('test ping') return requests.get('', params={'return': 'json'}).json()Lo que sucede es que el decorador app.get obtiene el objeto real de su función y lo almacena internamente en su aplicación FastAPI.
Cuando se burla de best_authors , no le importará a FastAPI, ya que usará el objeto que había almacenado previamente.
Honestamente, no lo probaría de esta manera. Tendría una prueba unitaria donde pruebo el comportamiento de best_authors .
Lo que en este caso sería burlarse requests.get y asegurarse de que se llamara y que el resultado se devolviera correctamente.