Python 在connexion/flask应用程序中,如何在端点的正文中使用参数伪造post请求?
我正在测试我的connexion应用程序,我已经跟踪了链接 get请求似乎工作正常。现在我尝试测试post请求,但endpoint方法将参数作为参数。我的设置与上面链接的设置非常相似,我遵循了上面列出的建议,但似乎不起作用。在我的测试中,我尝试了以下方法:Python 在connexion/flask应用程序中,如何在端点的正文中使用参数伪造post请求?,python,flask,http-post,werkzeug,Python,Flask,Http Post,Werkzeug,我正在测试我的connexion应用程序,我已经跟踪了链接 get请求似乎工作正常。现在我尝试测试post请求,但endpoint方法将参数作为参数。我的设置与上面链接的设置非常相似,我遵循了上面列出的建议,但似乎不起作用。在我的测试中,我尝试了以下方法: response = client.post('/path-to-request', data=dict(var1='data1', var2='data2')) 其中客户端与定义的客户端相同。我将把这个路径映射到我的swagger文件中的
response = client.post('/path-to-request', data=dict(var1='data1', var2='data2'))
其中客户端与定义的客户端相同。我将把这个路径映射到我的swagger文件中的一个python方法,并希望检索post中打包的数据作为该方法的参数。招摇过市文件中的示例代码段:
paths:
...
/models:
post:
operationId: bar.foo
...
然后在bar.py中,我将有一个方法foo:
foo(data_here):
<code>
我上面提到的尝试似乎不起作用,我将完成该方法,代码将执行,但“data_here”将为None,我希望它是打包在post请求中的dict(var1='data1',var2='data2')。感谢您的帮助,谢谢 好吧,我想我找到了答案。通过阅读答案,我可以通过以下操作使其正常工作:
response = client.post('/models', data=json.dumps(job), headers=headers)
@pytest.fixture
def app():
app = App(__name__, specification_dir=SWAGGER_PATH)
app.app.json_encoder = JSONEncoder
app.add_api("swagger.yaml")
app_client = app.app.test_client()
return app_client
def test_post_foo(app) -> None:
"""
:except:201
"""
response = app.post("/api/all",
content_type='application/json',
data=json.dumps(foo_data))
assert response.status_code == 201