2016-04-18 6 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

'assert' foooobarr 'in rv.data'を削除してみます。 'rv.data'を表示し、あなたが得るものを見てください。実際に 'rv.data'に' foooobarr'という文字列がありますか? 'request.form'はおそらく' RegistrationForm() 'の内部にあってはなりません。 – wgwz

+0

デバッグモードまたはロギングを有効にし、トレースバックを見てください。 http://stackoverflow.com/questions/32722143/flask-application-traceback-doesnt-show-up-in-server-log [編集]をクリックして[mcve]を作成してください。 – davidism

+0

はい、現在500です。しかし、このコードは私が欲しいもののアイデアを説明することに過ぎません。 – Castle

答えて

0

アサーションで例外が発生します。例外の詳細は決してクライアントに送信されません。ブラウザはHTTP 500しか取得しません。つまり、サーバーに何か問題があることを意味します。未処理の例外はまさにそれです - サーバーに問題があります。

例外を表示するには、フラスコ内のデバッグモードを有効にします。

app.run(debug=True) 
+0

はい、それは500ですが、私の質問はそれに関するものではありません。このコードは、私が欲しいもののアイデアを説明するためのものです。あなたは実例を提供できますか? – Castle

+0

@キャスルそれでは、あなたが何を求めているのか分かりません。主な質問を一文に入れることができますか? – zvone

関連する問題