后置方法的烧瓶单元测试 [英] Flask Unittest for Post Method
本文介绍了后置方法的烧瓶单元测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为返回返回模板的函数编写Flask单元测试.我尝试了几种方法,但似乎不起作用. 功能如下:
I am writing a Flask unit test for a function that would return a render template. I tried few ways but it seems not working. Here is the function:
@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'
)
我一直尝试的几种方法:
Few ways that I have been trying:
# 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
chooser.html
chooser.html
<body>
<h1>Choose an Icon to Insert</h1>
</body>
感谢您的所有帮助.
推荐答案
下面是一个可以帮助您理解的示例.我们的应用程序-app.py
:
Here an example which can help you to understand. Our application - 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
希望有帮助.
这篇关于后置方法的烧瓶单元测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文