2016-05-28 7 views
0

私はFlaskアプリケーションのビューをテストしていますが、いくつか問題があります。フォーム提出にはcsrfトークンを使用し、ログインにはサブドメインも使用しています。そのテスト方法も不思議でした。誰かが経験を持っているか、私に例や指導を与えてもらえれば、私がすでに参考にしたガイドとドキュメントをすべて読んだので、感謝します。フラスコビューテスト一般とサブドメイン

以下は私がテストしようとしているもので、実行しているテストです。

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
if request.method == 'POST': 
    try: 
     #acts as redirect, but with subdomain 
     return redirect_subdomain('login', request.url, request.form['subdomain']) 

    except OrganizationDoesNotExistException: 
     return render_template('login.html', subdomain=False) 

return render_template('login.html', subdomain=False) 

これは私が始めようとしているテストです。それだけで私は将来のためにテストを書く方法を知りたい、働きサブドメイン特定のログインにユーザーをリダイレクトするために使用されるサブドメイン(組織)を受け入れる:

def test_login(self): 
    rv = self.login('test') 
    print(rv.data.decode('utf-8')) 
    pass 


def login(self, organization): 
    return self.app.post('/login', data=dict(
     organization=organization 
    ), follow_redirects=True) 

私は、これらは基本的なものを知っていますテストして、実際に多くのテストをしないでください。でも、私はまだエラーが発生します。私の場合のように、一般的なビューとサブドメインが関わっているときのテストの方法について知りたいと思います。

答えて

0

サブドメインルーティングを使用してフラスコアプリのユニットテストを作成できるようにするには、test_client()関数を使用できます。これを行うには、test_clientオブジェクトのallow_subdomain_redirects属性をTrueに設定する必要があります。

ここでは、サブドメインルーティングを使用するフラスコアプリのテストケースの例を示します。

import yourapp 
import unittest 

class FlaskTestCase(unittest.TestCase): 
    def setUp(self): 
     self.app = yourapp.app.test_client() 
     self.app.allow_subdomain_redirects = True 

    def test_request(self): 
     r = self.app.get('http://subdomain.domain.com/route/', query_string='key=value') 
     self.assertEquals(r.data, known_result) 
+0

@ヤコブ私はOPの質問にこのコメントを投稿するつもりだったと思います。私は実際にこのポストで質問をしなかったので、なぜ私が "少なくとももっと喜んで答えてくれる人を増やす"必要があるのか​​分かりません。いずれにせよ、私は自分の反応を明確にしようとしました。 また、「これに似たテスト**ケース**を実行しようとしてください:」(強調する)、続いてテストケースのコードが続きます。私の答えから欠けていることを明確にしてください。 – laytod

+0

yeap、申し訳ありません、私は疲れのために十分に気配りではありませんでした。私の悪いこと、あなたの答えについては、何もする必要はありません – YakovL