gpt4 book ai didi

python - 用于 Post 方法的 Flask 单元测试

转载 作者:行者123 更新时间:2023-11-28 22:26:20 26 4
gpt4 key购买 nike

我正在为返回渲染模板的函数编写 Flask 单元测试。我尝试了几种方法,但似乎不起作用。这是函数:

@app.route('/', methods=['POST'])
@lti(request='initial', error=error, app=app)
def chooser(lti=lti):
return_url = request.form.get('launch_presentation_return_url', '#')
return render_template(
'chooser.html'
)

我尝试过的几种方法:

# 1st way    
rv = self.app.post('/')
self.assertTrue('Choose an Icon to Insert' in rv.get_data(as_text=True))
# Error
self.assertTrue('Choose an Icon to Insert' in rv.get_data(as_text=True))
AssertionError: False is not true


# 2nd way
rv = self.app.post('/chooser.html')
assert '<h1>Choose an Icon to Insert</h1>' in rv.data
# Error
assert 'Choose an Icon to Insert' in rv.data
AssertionError

选择器.html

 <body>
<h1>Choose an Icon to Insert</h1>
</body>

感谢您的所有帮助。

最佳答案

这里有一个例子可以帮助你理解。我们的应用程序 - app.py:

import httplib
import json

from flask import Flask, request, Response

app = Flask(__name__)


@app.route('/', methods=['POST'])
def main():
url = request.form.get('return_url')
# just example. will return value of sent return_url
return Response(
response=json.dumps({'return_url': url}),
status=httplib.OK,
mimetype='application/json'
)

我们的测试 - test_api.py:

import json
import unittest

from app import app
# set our application to testing mode
app.testing = True


class TestApi(unittest.TestCase):

def test_main(self):
with app.test_client() as client:
# send data as POST form to endpoint
sent = {'return_url': 'my_test_url'}
result = client.post(
'/',
data=sent
)
# check result from server with expected data
self.assertEqual(
result.data,
json.dumps(sent)
)

如何运行:

python -m unittest discover -p path_to_test_api.py

结果:

----------------------------------------------------------------------
Ran 1 test in 0.009s

OK

希望对您有所帮助。

关于python - 用于 Post 方法的 Flask 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44892061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com