我正在尝试测试我的连接应用,我已经按照链接here,
获取请求似乎工作正常。现在我正在尝试测试发布请求,但端点方法将参数作为参数。我的设置与上面链接的设置非常相似,我遵循了here列出的建议,但它似乎不起作用。在我的测试中,我尝试过类似的东西:
response = client.post('/path-to-request', data=dict(var1='data1', var2='data2'))
其中客户端与ksindi here定义的客户端相同。我将这个路径映射到我的swagger文件中的python方法,并希望将post中打包的数据作为该方法的参数进行检索。 swagger文件中的示例代码段:
paths:
...
/models:
post:
operationId: bar.foo
...
然后在bar.py中我会有一个方法foo:
foo(data_here):
<code>
我上面提到的尝试似乎不起作用,我将通过该方法并且代码将执行但“data_here”将是None,我希望它是dict(var1 ='data1',var2 ='与post请求一起打包的data2')。任何帮助表示赞赏谢谢!
答案 0 :(得分:1)
好的,所以我想我明白了。阅读答案here by Martjin,我可以通过以下方式让它发挥作用:
strict
答案 1 :(得分:0)
@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