código de aplicación del matraz:
# main.py from flask import Flask, Response app = Flask(__name__) @app.route("/", methods=["POST"]) def post_example(): return Response("aaa")y este es mi código de prueba:
# e2e.py from main import app test_client = app.test_client() def test_flask_api_call(): response = test_client.post("/", {"a": "b"}) passsigo recibiendo:
raise ValueError("unknown url type: %r" % self.full_url) ValueError: unknown url type: '://%7B%27a%27:%20%27b%27%7D/'El problema está en la llamada al método de post . Debe nombrar sus argumentos de datos client.post("/", data={"a": "b"}) , si no es el caso, se considera como parte de la URL.
urllib.parse.quote("/" + str({"a": "b"})) # '/%7B%27a%27%3A%20%27b%27%7D' Aquí está el código de prueba reescrito para definir un fixture para la inicialización del cliente. Más información sobre la aplicación del matraz de prueba en el documento oficial .
import pytest from main import app @pytest.fixture(scope="module") def client(): with app.test_client() as client: yield client def test_flask_api_call(client): response = client.post("/", data={"a": "b"}) assert response.status_code == 200, f"Got bad status code {response.status_code}"