quart icon indicating copy to clipboard operation
quart copied to clipboard

Quart test client does not support same "data" arguments as Flask / Werkzeug

Open kruton opened this issue 1 year ago • 0 comments

When migrating from Flask to Quart, one of the issues I ran into was that Werkzeug's client supports more in the data field. This input supports having a dict passed in which will encode it to a form and also allows values to be file data. If you look at Quart's test client, it only accepts pre-formatted data fields. It doesn't support passing in form-like data which is encoded. This is much less flexible than Flask / Werkzeug allowed and is making porting hundreds of tests a headache for this Flask project.

Here's an example of a snippet of tests:

async with aiofiles.open(filename, 'rb') as f:
    data = {
        'file_mapping': 'custom',
        'xlsx_file': (io.BytesIO(await f.read()), 'spreadsheet.xlsx')
    }

    res = await client.post(
        url_for("import_page"),
        data=data,
        follow_redirects=True,
    )

In Quart this results in something that is not parseable on the server side.

kruton avatar Aug 05 '24 06:08 kruton