unitarios unit test pooco para flaskr python testing flask nosetests werkzeug

python - unit - Obtenga la dirección IP al probar la aplicación del matraz a través de las pruebas de nos



test unitarios flask (2)

Mi aplicación depende de request.remote_addr que es None cuando ejecuto pruebas a través de pruebas de detección que usan app.test_client().post(''/users/login'', ....) .

¿Cómo puedo emular una IP (127.0.0.1 funciona bien) cuando ejecuto pruebas? Intenté establecer variables de entorno, envié encabezados con el método post () y revisé las pruebas de detección de narices, werkzeugs y matraces, pero nada de lo que probé ha funcionado.


Puede establecer opciones para el entorno subyacente de Werkzeug utilizando environ_base :

from flask import Flask, request import unittest app = Flask(__name__) app.debug = True app.testing = True @app.route(''/'') def index(): return str(request.remote_addr) class TestApp(unittest.TestCase): def test_remote_addr(self): c = app.test_client() resp = c.get(''/'', environ_base={''REMOTE_ADDR'': ''127.0.0.1''}) self.assertEqual(''127.0.0.1'', resp.data) if __name__ == ''__main__'': unittest.main()


Un amigo me dio esta solución, que funciona en todas las solicitudes:

class myProxyHack(object): def __init__(self, app): self.app = app def __call__(self, environ, start_response): environ[''REMOTE_ADDR''] = environ.get(''REMOTE_ADDR'', ''127.0.0.1'') return self.app(environ, start_response) app.wsgi_app = myProxyHack(app.wsgi_app) app.test_client().post(...)