moodh moodh - 24 days ago 7
Python Question

Get IP Address when testing flask application through nosetests

My application depends on

request.remote_addr
which is
None
when i run tests through nosetests which uses
app.test_client().post('/users/login', ....)
.

How can I emulate an IP (127.0.0.1 works fine) when I run tests?
I've tried setting environment variables, sent in headers with the post() method and I've digged through nosetests, werkzeugs and flasks documentation but nothing I've tried has worked.

Answer

A friend gave me this solution, which works across all requests:

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(...)
Comments