How can I fake request.POST and GET params for unit testing in Flask? How can I fake request.POST and GET params for unit testing in Flask? flask flask

How can I fake request.POST and GET params for unit testing in Flask?


Did you read Flask docs about testing?

You can use following:

self.app.post('/path-to-request', data=dict(var1='data1', var2='data2', ...))self.app.get('/path-to-request', query_string=dict(arg1='data1', arg2='data2', ...))

Current development version of Flask also includes support for testing JSON APIs:

from flask import request, jsonify@app.route('/jsonapi')def auth():    json_data = request.get_json()    attribute = json_data['attr']    return jsonify(resp=generate_response(attribute))with app.test_client() as c:    rv = c.post('/jsonapi', json={        'attr': 'value', 'other': 'data'    })    json_data = rv.get_json()    assert generate_response(email, json_data['resp'])


POST:

self.app.post('/endpoint', data=params)

GET:

self.app.get('/endpoint', query_string=params)


If you prefer to use test_request_context:

import unittestfrom myapp import extract_query_paramstestapp = flask.Flask(__name__)class TestFoo(unittest.TestCase):    def test_happy(self):        with testapp.test_request_context('?limit=1&offset=2'):            limit, offset = extract_query_params(['limit', 'offset'])            self.assertEquals(limit, 1)            self.assertEquals(offset, 2)