'TypeError: __init__() got an unexpected keyword argument 'as_tuple'
While I am testing my API I recently started to get the error below.
if request is None:
> builder = EnvironBuilder(*args, **kwargs)
E TypeError: __init__() got an unexpected keyword argument 'as_tuple'
/usr/local/lib/python3.7/site-packages/werkzeug/test.py:1081: TypeError
As I read from the documentation in the newer version of Werkzeug
the as_tuple
parameter is removed.
Part of my test code is
from flask.testing import FlaskClient
@pytest.fixture(name='test_client')
def _test_client() -> FlaskClient:
app = create_app()
return app.test_client()
class TestPeerscoutAPI:
def test_should_have_access_for_status_page(self, test_client: FlaskClient):
response = test_client.get('/api/status')
assert _get_ok_json(response) == {"status": "OK"}
Solution 1:[1]
As of version 2.1.0, werkzeug
has removed the as_tuple
argument to Client
. Since Flask wraps werkzeug and you're using a version that still passes this argument, it will fail. See the exact change on the GitHub PR here.
You can take one of two paths to solve this:
Upgrade flask
Pin your werkzeug version
# in requirements.txt
werkzeug==2.0.3
Solution 2:[2]
Adding to Christian Di Lorenzo's answer
- Upgrade flask
# in requirements.txt
Flask==2.1.1
- Pin your werkzeug version
# in requirements.txt
werkzeug==2.0.3
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Christian Di Lorenzo |
Solution 2 | Shalin Hudda |