2016-04-18 58 views
0

这是一个关于我如何测试Web API的极简例子。显然,我会得到500而不是预期的断言。我做错了什么?烧瓶 - 如何正确测试POST?

import unittest 

from flask import Flask, request 

from app.forms import RegistrationForm 

app = Flask(__name__) 

@app.route('/', methods=['GET', 'POST']) 
def hello_world(): 
    form = RegistrationForm(request.form) 
    return form.foo.data+form.bar.data 


class AppTestCase(unittest.TestCase): 
    def setUp(self): 
     self.app = app.test_client() 

    def tearDown(self): 
     pass 

    def test_login_logout(self): 
     rv=self.app.post('/', data=dict(
      foo='foooo', 
      bar='barrr' 
     ), follow_redirects=True) 
     assert 'foooobarrr' in rv.data 

if __name__ == '__main__': 
    app.run() 
+0

尝试在rv.data中删除'assert'foooobarr'。然后打印'rv.data'并看看你得到了什么。在'rv.data'中真的是'foooobarr'字符串吗?作为附注'request.form'可能不应该在'RegistrationForm()' – wgwz

+0

的内部启用调试模式或日志并查看回溯。 http://stackoverflow.com/questions/32722143/flask-application-traceback-doesnt-show-up-in-server-log请[edit]创建[mcve]。 – davidism

+0

是的,它目前有500个。但是这段代码只是为了说明我想要的东西。 – Castle

回答

0

断言引发异常。异常细节永远不会发送给客户端。浏览器只能获得HTTP 500,这意味着服务器出现问题。一个未处理的异常就是 - 服务器出现问题。

为了查看异常,请在flask中启用调试模式。

app.run(debug=True) 
+0

是的,它确实是500,但我的问题不是它。这段代码只是为了说明我想要的东西。你能提供一个有效的例子吗? – Castle

+0

@Castle然后我不明白你在问什么。你能把你的主要问题放在一个句子中吗? – zvone