Python 在connexion/flask应用程序中,如何在端点的正文中使用参数伪造post请求?

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文件中的

我正在测试我的connexion应用程序,我已经跟踪了链接

get请求似乎工作正常。现在我尝试测试post请求,但endpoint方法将参数作为参数。我的设置与上面链接的设置非常相似,我遵循了上面列出的建议,但似乎不起作用。在我的测试中,我尝试了以下方法:

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